Issue 33302: The search for pyvenv.cfg doesn't match PEP 405 (original) (raw)
PEP 405 says that the pyvenv.cfg file is found as follows:
« a pyvenv.cfg file is found either adjacent to the Python executable or one directory above it (if the executable is a symlink, it is not dereferenced), »
But in cpython if the executable is a symlink, it is dereferenced before searching for pyvenv.cfg .
I've checked this behaviour with Python 3.5, 3.6, and today's 3.7 tip.
Looking in 3.7's getpath.c, calculate_path_impl() calls, in order:
calculate_program_full_path() calculate_argv0_path() calculate_read_pyenv()
It looks like the symlink resolution happens near the end of calculate_argv0_path().
I think this means that the 'home=' line in pyvenv.cfg files generated by the 'venv' module is irrelevant (and seems likely to confuse anyone who might try to construct a Python environment by imitating a built venv).