From 512dc82a0424af2927b1f77a4657dc9c4a0c5724 Mon Sep 17 00:00:00 2001 From: Stan Ulbrych Date: Sun, 5 Oct 2025 15:32:39 +0100 Subject: [PATCH] Revert "gh-133951: Remove lib64->lib symlink in venv creation (#137139)" This reverts commit a7a485558c05a59665d24f9bc048db8a41daf532. --- Lib/test/test_venv.py | 10 ++++++++-- Lib/venv/__init__.py | 9 ++++++--- .../2025-07-27-17-03-17.gh-issue-133951.7kwt78.rst | 2 -- 3 files changed, 14 insertions(+), 7 deletions(-) delete mode 100644 Misc/NEWS.d/next/Library/2025-07-27-17-03-17.gh-issue-133951.7kwt78.rst diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py index 68bcf535eada10..015f02925505e8 100644 --- a/Lib/test/test_venv.py +++ b/Lib/test/test_venv.py @@ -12,6 +12,7 @@ import pathlib import re import shutil +import struct import subprocess import sys import sysconfig @@ -137,9 +138,14 @@ def _check_output_of_default_create(self): self.isdir(self.bindir) self.isdir(self.include) self.isdir(*self.lib) + # Issue 21197 p = self.get_env_file('lib64') - if os.path.exists(p): - self.assertFalse(os.path.islink(p)) + conditions = ((struct.calcsize('P') == 8) and (os.name == 'posix') and + (sys.platform != 'darwin')) + if conditions: + self.assertTrue(os.path.islink(p)) + else: + self.assertFalse(os.path.exists(p)) data = self.get_text_file_contents('pyvenv.cfg') executable = sys._base_executable path = os.path.dirname(executable) diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py index e5addcc393a1b9..dc9c5991df7e1c 100644 --- a/Lib/venv/__init__.py +++ b/Lib/venv/__init__.py @@ -174,7 +174,6 @@ def create_if_needed(d): context.python_exe = exename binpath = self._venv_path(env_dir, 'scripts') libpath = self._venv_path(env_dir, 'purelib') - platlibpath = self._venv_path(env_dir, 'platlib') # PEP 405 says venvs should create a local include directory. # See https://peps.python.org/pep-0405/#include-files @@ -192,8 +191,12 @@ def create_if_needed(d): create_if_needed(incpath) context.lib_path = libpath create_if_needed(libpath) - context.platlib_path = platlibpath - create_if_needed(platlibpath) + # Issue 21197: create lib64 as a symlink to lib on 64-bit non-OS X POSIX + if ((sys.maxsize > 2**32) and (os.name == 'posix') and + (sys.platform != 'darwin')): + link_path = os.path.join(env_dir, 'lib64') + if not os.path.exists(link_path): # Issue #21643 + os.symlink('lib', link_path) context.bin_path = binpath context.bin_name = os.path.relpath(binpath, env_dir) context.env_exe = os.path.join(binpath, exename) diff --git a/Misc/NEWS.d/next/Library/2025-07-27-17-03-17.gh-issue-133951.7kwt78.rst b/Misc/NEWS.d/next/Library/2025-07-27-17-03-17.gh-issue-133951.7kwt78.rst deleted file mode 100644 index dfda8e8f10ccf5..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-07-27-17-03-17.gh-issue-133951.7kwt78.rst +++ /dev/null @@ -1,2 +0,0 @@ -Remove lib64-lib symlink creation when creating new virtual environments in -:mod:`venv` module