Skip to content

Commit f44524a

Browse files
committed
Avoid spurious "location may have moved" on Windows
The main case where this happens is when tempfile.gettempdir() has a component in it that uses an 8.3-encoded path, e.g., C:\Users\Administrator\... -> C:\Users\ADMINI~1\... This is a workaround for python/cpython#90329. I call realpath only once, when the venv is created, and not on any paths inside the venv, to make it less likely this masks the problems the warning is meant for. (For example, if Scripts, or python.exe in it, produced this even with the venv created as it is now, then that may indicte an actual problem.) Note that copying python.exe from Scripts to one level up in the venv, and changing its name to bash.exe to use it to simulate the bash.exe impostor, as is done in test_hook_uses_shell_not_from_cwd, should not (and does not) produce this warning. If that ever starts to do so, then that should be examined as a sign of brittleness.
1 parent a42ea0a commit f44524a

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

Diff for: test/lib/helper.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -400,8 +400,12 @@ class VirtualEnvironment:
400400
__slots__ = ("_env_dir",)
401401

402402
def __init__(self, env_dir, *, with_pip):
403-
self._env_dir = env_dir
404-
venv.create(env_dir, symlinks=(os.name != "nt"), with_pip=with_pip)
403+
if os.name == "nt":
404+
self._env_dir = osp.realpath(env_dir)
405+
venv.create(self.env_dir, symlinks=False, with_pip=with_pip)
406+
else:
407+
self._env_dir = env_dir
408+
venv.create(self.env_dir, symlinks=True, with_pip=with_pip)
405409

406410
@property
407411
def env_dir(self):

0 commit comments

Comments
 (0)