-
-
Notifications
You must be signed in to change notification settings - Fork 33.3k
Description
Bug report
Bug description:
We started seeing incorrect behavior specifically on Windows with respect to pip finding the correct environment variables / registry information. (Full GHA can be seen here: https://github.com/Pyomo/pyomo/actions/runs/18721843436/job/53397827326?pr=3768)
Basic gist:
- Windows (both 2022 and 2025 servers)
- Python 3.13.7/9, 3.14.0
- Miniconda (conda version: 25.7.0)
We install a set of packages using conda install, but there are a few that are only available through pip. When attempting to pip config, pip debug, pip install, anything pip, it returns an error similar to:
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\Miniconda\envs\test\Lib\site-packages\pip\__main__.py", line 24, in <module>
sys.exit(_main())
~~~~~^^
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_internal\cli\main.py", line 65, in main
cmd_name, cmd_args = parse_command(args)
~~~~~~~~~~~~~^^^^^^
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_internal\cli\main_parser.py", line 79, in parse_command
general_options, args_else = parser.parse_args(args)
~~~~~~~~~~~~~~~~~^^^^^^
File "C:\Miniconda\envs\test\Lib\optparse.py", line 1371, in parse_args
values = self.get_default_values()
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_internal\cli\parser.py", line 283, in get_default_values
self.config.load()
~~~~~~~~~~~~~~~~^^
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_internal\configuration.py", line 127, in load
self._load_config_files()
~~~~~~~~~~~~~~~~~~~~~~~^^
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_internal\configuration.py", line 258, in _load_config_files
config_files = dict(self.iter_config_files())
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_internal\configuration.py", line 353, in iter_config_files
config_files = get_configuration_files()
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_internal\configuration.py", line 73, in get_configuration_files
os.path.join(path, CONFIG_BASENAME) for path in appdirs.site_config_dirs("pip")
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_internal\utils\appdirs.py", line 47, in site_config_dirs
dirval = _appdirs.site_config_dir(appname, appauthor=False, multipath=True)
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_vendor\platformdirs\__init__.py", line 146, in site_config_dir
).site_config_dir
^^^^^^^^^^^^^^^
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_vendor\platformdirs\windows.py", line 67, in site_config_dir
return self.site_data_dir
^^^^^^^^^^^^^^^^^^
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_vendor\platformdirs\windows.py", line 56, in site_data_dir
path = os.path.normpath(get_win_folder("CSIDL_COMMON_APPDATA"))
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Miniconda\envs\test\Lib\site-packages\pip\_vendor\platformdirs\windows.py", line 209, in get_win_folder_from_registry
directory, _ = winreg.QueryValueEx(key, shell_folder_name)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [WinError 2] The system cannot find the file specified
I have found that reverting to 3.13.5 is a workaround (specifically for 3.13), but we are now seeing it on 3.13.7/8/9 and 3.14.0. We have tried manually setting multiple environment variables (such as "CSIDL_COMMON_APPDATA"), "tricking" pip into using an empty config, running pip in --isolated mode.
CPython versions tested on:
3.13, 3.14
Operating systems tested on:
Windows