New issue 170: Mercurial can break when executed with environment interpreter https://bitbucket.org/hpk42/tox/issue/170/mercurial-can-break-when-executed-with
Martin Geisler: I ran into a fun little problem today: I have a dependency of this form in my `requirements.txt` file: -e hg+https://bitbucket.org/mg/cram/#egg=cram I'm also a Mercurial developer, so I have a Mercurial compiled for Python 2.7 in my `PATH`. Unlike the system Mercurial (on Debian), this `hg` script starts with #!/usr/bin/env python This causes problems when installing the dependency in a non-Python 2.7 environment since `pip` executes `hg` and this in turn finds the currently selected interpreter. For reference, the error looks like this: Obtaining cram from hg+https://bitbucket.org/mg/cram/#egg=cram (from -r /home/mg/src/zpm/test-requirements.txt (line 8)) Cloning hg https://bitbucket.org/mg/cram/ to /home/mg/src/zpm/.tox/py26/src/cram Traceback (most recent call last): File "/home/mg/opt/bin/hg", line 38, in <module> mercurial.dispatch.run() File "/home/mg/src/mercurial-crew/mercurial/dispatch.py", line 28, in run sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255) File "/home/mg/src/mercurial-crew/mercurial/dispatch.py", line 41, in dispatch req.ui = uimod.ui() File "/home/mg/src/mercurial-crew/mercurial/ui.py", line 49, in __init__ for f in scmutil.rcpath(): File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 102, in __getattribute__ self._load() File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 74, in _load mod = _hgextimport(_import, head, globals, locals, None, level) File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 43, in _hgextimport return importfunc(name, globals, *args) File "/home/mg/src/mercurial-crew/mercurial/scmutil.py", line 954, in <module> if util.safehasattr(parsers, 'dirs'): File "/home/mg/src/mercurial-crew/mercurial/util.py", line 81, in safehasattr return getattr(thing, attr, _notset) is not _notset File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 102, in __getattribute__ self._load() File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 74, in _load mod = _hgextimport(_import, head, globals, locals, None, level) File "/home/mg/src/mercurial-crew/mercurial/demandimport.py", line 43, in _hgextimport return importfunc(name, globals, *args) ImportError: Python minor version mismatch: The Mercurial extension modules were compiled with Python 2.7.6, but Mercurial is currently using Python with sys.hexversion=33949936: Python 2.6.8 (unknown, Jan 29 2013, 10:05:44) [GCC 4.7.2] at: /home/mg/src/zpm/.tox/py26/bin/python The error can probably also occur when installing using a `-e bzr+` line in a `requirements.txt` file. I'm not sure the error really lies with tox — maybe it's pip that should sanitize the environment before executing the external programs it needs for downloading dependencies. Any advice on a good way to solve this? _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit