Skip to content

[bug][windows] failiing if there is an exe in path #2861

Open
@AdrianCert

Description

@AdrianCert

Issue

If you happen to add an executable file (or even a simple file) to the PATH environment variable, the virtual environment may break. I'm not sure of the equivalent process in Linux, but typically, PATH entries are expected to be directories. While it's uncommon for programs to store files directly in PATH, some do. Therefore, we cannot guarantee that it will always contain only directories, making it unreliable to trust.

Environment

  • OS: WINDOWS

Traceback

  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\run\__init__.py", line 49, in session
    parser, elements = build_parser(args, options, setup_logging, env)
    self._virtualenv_session = session_via_cli(env_dir, options=None, setup_logging=False, env=env)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\run\__init__.py", line 49, in session
    parser, elements = build_parser(args, options, setup_logging, env)
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\run\__init__.py", line 49, in session
    parser, elements = build_parser(args, options, setup_logging, env)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\run\__init__.py", line 77, in build_p
    parser._interpreter = interpreter = discover.interpreter  # noqa: SLF001
                                        ^^^^^^^^^^^^^^^^^^^^
                                        ^^^^^^^^^^^^^^^^^^^^
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\discovery\discover.py", line 41, in i
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\discovery\discover.py", line 41, in i
    self._interpreter = self.run()
    self._interpreter = self.run()
                        ^^^^^^^^^^
                        ^^^^^^^^^^
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\discovery\builtin.py", line 62, in ru
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\discovery\builtin.py", line 62, in ru
    result = get_interpreter(python_spec, self.try_first_with, self.app_data, self._env)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    result = get_interpreter(python_spec, self.try_first_with, self.app_data, self._env)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\discovery\builtin.py", line 79, in ge
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\discovery\builtin.py", line 79, in ge
    for interpreter, impl_must_match in propose_interpreters(spec, try_first_with, app_data, env):
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\discovery\builtin.py", line 79, in ge
    for interpreter, impl_must_match in propose_interpreters(spec, try_first_with, app_data, env):
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    for interpreter, impl_must_match in propose_interpreters(spec, try_first_with, app_data, env):
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\discovery\builtin.py", line 153, in p
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\discovery\builtin.py", line 153, in p
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\discovery\builtin.py", line 153, in p
    for exe, impl_must_match in find_candidates(path):
                                ^^^^^^^^^^^^^^^^^^^^^
  File "C:\mnt\dev\handy_helpers\packages\my-packages\.venv\Lib\site-packages\virtualenv\discovery\builtin.py", line 213, in path_exes
    for exe in path.iterdir():
               ^^^^^^^^^^^^^^
  File "C:\Users\pan7clj\AppData\Roaming\uv\python\cpython-3.12.6-windows-x86_64-none\Lib\pathlib.py", line 1056, in iterdir
    for name in os.listdir(self):
                ^^^^^^^^^^^^^^^^
NotADirectoryError: [WinError 267] The directory name is invalid: 'C:\\Program Files\\Git\\git-bash.exe'

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions