[pypy-commit] pypy default: Grumble, we must actually not kill duplicates from PYTHONPATH.
arigo
noreply at buildbot.pypy.org
Sat Oct 6 13:37:27 CEST 2012
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r57805:41121ed0f5c1
Date: 2012-10-06 13:37 +0200
http://bitbucket.org/pypy/pypy/changeset/41121ed0f5c1/
Log: Grumble, we must actually not kill duplicates from PYTHONPATH.
setuptools's site.py relies on that.
diff --git a/pypy/translator/goal/app_main.py b/pypy/translator/goal/app_main.py
--- a/pypy/translator/goal/app_main.py
+++ b/pypy/translator/goal/app_main.py
@@ -226,17 +226,18 @@
def setup_and_fix_paths(ignore_environment=False, **extra):
import os
newpath = sys.path[:]
+ del sys.path[:]
+ # first prepend PYTHONPATH
readenv = not ignore_environment
path = readenv and os.getenv('PYTHONPATH')
if path:
- newpath = path.split(os.pathsep) + newpath
- # remove duplicates
- _seen = {}
- del sys.path[:]
+ sys.path.extend(path.split(os.pathsep))
+ # then add again the original entries, ignoring duplicates
+ _seen = set()
for dir in newpath:
if dir not in _seen:
sys.path.append(dir)
- _seen[dir] = True
+ _seen.add(dir)
def set_stdio_encodings(ignore_environment):
import os
diff --git a/pypy/translator/goal/test2/test_app_main.py b/pypy/translator/goal/test2/test_app_main.py
--- a/pypy/translator/goal/test2/test_app_main.py
+++ b/pypy/translator/goal/test2/test_app_main.py
@@ -397,6 +397,15 @@
finally:
del os.environ['PYTHONINSPECT_']
+ def test_python_path_keeps_duplicates(self):
+ old = os.environ.get('PYTHONPATH', '')
+ try:
+ os.environ['PYTHONPATH'] = 'foobarbaz:foobarbaz'
+ child = self.spawn(['-c', 'import sys; print sys.path'])
+ child.expect(r"\['', 'foobarbaz', 'foobarbaz', ")
+ finally:
+ os.environ['PYTHONPATH'] = old
+
def test_ignore_python_path(self):
old = os.environ.get('PYTHONPATH', '')
try:
More information about the pypy-commit
mailing list