This is really very comprehensive, thank you! > Why not modify sys.prefix? > - -------------------------- > > As discussed above under `Backwards Compatibility`_, this PEP proposes > to add ``sys.site_prefix`` as "the prefix relative to which > site-package directories are found". This maintains compatibility with > the documented meaning of ``sys.prefix`` (as the location relative to > which the standard library can be found), but means that code assuming > that site-packages directories are found relative to ``sys.prefix`` > will not respect the virtual environment correctly. > > Since it is unable to modify ``distutils``/``sysconfig``, > `virtualenv`_ is forced to instead re-point ``sys.prefix`` at the > virtual environment. > > An argument could be made that this PEP should follow virtualenv's > lead here (and introduce something like ``sys.base_prefix`` to point > to the standard library and header files), since virtualenv already > does this and it doesn't appear to have caused major problems with > existing code. > > Another argument in favor of this is that it would be preferable to > err on the side of greater, rather than lesser, isolation. Changing > ``sys.prefix`` to point to the virtual environment and introducing a > new ``sys.base_prefix`` attribute would err on the side of greater > isolation in the face of existing code's use of ``sys.prefix``.
It would seem to make sense to me to err on the side of greater isolation, introducing sys.base_prefix to indicate the base prefix (as opposed to sys.site_prefix indicating the venv prefix). Bugs introduced via a semi-isolated virtual environment are very difficult to troubleshoot. It would also make changes to existing code unnecessary. I have encountered no issues with virtualenv doing this so far. - C _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com