diff --git a/docs/changelog/2440.bugfix.rst b/docs/changelog/2440.bugfix.rst new file mode 100644 index 000000000..479d7f3c4 --- /dev/null +++ b/docs/changelog/2440.bugfix.rst @@ -0,0 +1 @@ +Use parent directory of python executable for pyvenv.cfg "home" value per PEP 405 - by :user:`vfazio`. diff --git a/src/virtualenv/create/creator.py b/src/virtualenv/create/creator.py index a95b6e2d5..5ea6abec4 100644 --- a/src/virtualenv/create/creator.py +++ b/src/virtualenv/create/creator.py @@ -157,7 +157,7 @@ def run(self): def set_pyenv_cfg(self): self.pyenv_cfg.content = OrderedDict() - self.pyenv_cfg["home"] = self.interpreter.system_exec_prefix + self.pyenv_cfg["home"] = os.path.dirname(os.path.abspath(self.interpreter.system_executable)) self.pyenv_cfg["implementation"] = self.interpreter.implementation self.pyenv_cfg["version_info"] = ".".join(str(i) for i in self.interpreter.version_info) self.pyenv_cfg["virtualenv"] = __version__ diff --git a/tests/unit/create/test_creator.py b/tests/unit/create/test_creator.py index d3adb2ae6..35f919275 100644 --- a/tests/unit/create/test_creator.py +++ b/tests/unit/create/test_creator.py @@ -318,6 +318,15 @@ def test_prompt_set(tmp_path, creator, prompt): assert cfg["prompt"] == actual_prompt +@pytest.mark.parametrize("creator", CURRENT_CREATORS) +def test_home_path_is_exe_parent(tmp_path, creator): + cmd = [str(tmp_path), "--seeder", "app-data", "--without-pip", "--creator", creator] + + result = cli_run(cmd) + cfg = PyEnvCfg.from_file(result.creator.pyenv_cfg.path) + assert cfg["home"] == os.path.dirname(result.interpreter.system_executable) + + @pytest.mark.slow() @pytest.mark.usefixtures("current_fastest") def test_cross_major(cross_python, coverage_env, tmp_path, session_app_data):