Skip to content

Remove __PYVENV_LAUNCHER__ from the environment for child processes. - #62

Open
dmcooke wants to merge 1 commit into
sashahart:masterfrom
dmcooke:macos-python-executable
Open

Remove __PYVENV_LAUNCHER__ from the environment for child processes.#62
dmcooke wants to merge 1 commit into
sashahart:masterfrom
dmcooke:macos-python-executable

Conversation

@dmcooke

@dmcooke dmcooke commented Feb 20, 2020

Copy link
Copy Markdown

For framework builds of Python on macOS, if PYVENV_LAUNCHER exists,
it's used as the value of sys.executable, and thus is used as the base
for a raft of values, including the system directories in sys.path.
(See: site.py in Python source)

Additionally, python sets this in the environment for subprocesses,
as a way to get around some technical issues with launching scripts
that use the GUI. (See: Mac/Tools/pythonw.c in Python source)

Thus, when vex exec's /bin/python, the python launched
thinks it's actually vex's python, at /opt/local/bin/python
(or whatever), and so adds the non-virtualenv paths to sys.path.

For framework builds of Python on macOS, if __PYVENV_LAUNCHER__ exists,
it's used as the value of sys.executable, and thus is used as the base
for a raft of values, including the system directories in sys.path.
(See: site.py in Python source)

Additionally, python sets this in the environment for subprocesses,
as a way to get around some technical issues with launching scripts
that use the GUI. (See: Mac/Tools/pythonw.c in Python source)

Thus, when vex exec's <virtualenv>/bin/python, the python launched
thinks it's actually vex's python, at /opt/local/bin/python
(or whatever), and so adds the non-virtualenv paths to sys.path.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant