The pythonfinder.Finder dataclass, which tries to search all paths on the PATH environment variable somehow tries to access some system32 folders and throws an exception when that is not accessible. This happens with every pipenv call that tries gather information on the installed python versions, which means even pipenv --support broke.
Expected result
As I gave the --python option with a path to my python.exe on the commandline, I expected pipenv to completely ignore the pathsearch in the first place.
When I don't give that option, I expect the pathsearch to skip non-accessible paths.
Actual result
pipenv sync --python=C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\python.exe -v 14:48:14
Traceback (most recent call last):
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\Scripts\pipenv.exe\__main__.py", line 7, in <module>
# when invoked as python -m pip <command>
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 1157, in __call__
return self.main(*args, **kwargs)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\cli\options.py", line 58, in main
return super().main(*args, **kwargs, windows_expand_args=False)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 1078, in main
rv = self.invoke(ctx)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\decorators.py", line 92, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\cli\command.py", line 644, in sync
retcode = do_sync(
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\routines\install.py", line 321, in do_sync
ensure_project(
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\utils\project.py", line 38, in ensure_project
ensure_virtualenv(
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\utils\virtualenv.py", line 149, in ensure_virtualenv
python = ensure_python(project, python=python)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\utils\virtualenv.py", line 242, in ensure_python
path_to_python = find_a_system_python(python)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\utils\virtualenv.py", line 350, in find_a_system_python
finder = Finder(system=True, global_search=True)
File "<string>", line 8, in __init__
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\pythonfinder\pythonfinder.py", line 24, in __post_init__
self.system_path = self.create_system_path()
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\pythonfinder\pythonfinder.py", line 30, in create_system_path
return SystemPath.create(
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\pythonfinder\models\path.py", line 544, in create
instance._run_setup()
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\pythonfinder\models\path.py", line 182, in _run_setup
path_instances = [
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\pythonfinder\models\path.py", line 185, in <listcomp>
if exists_and_is_accessible(Path(p.strip('"')).resolve())
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\pathlib.py", line 1205, in resolve
s = self._flavour.resolve(self, strict=strict)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\pathlib.py", line 206, in resolve
s = self._ext_to_normal(_getfinalpathname(s))
PermissionError: [WinError 5] Access is denied: 'C:\\WINDOWS\\system32\\config\\systemprofile'
Steps to replicate
A simple pipenv install will do on my system (Windows 10, Python 3.9.5, pipenv 2023.12.1).
$ pipenv --support
Pipenv version: `'2023.12.1'`
Pipenv location: `'C:\\toolbase\\python\\3.9.5.0.0\\python-3.9.5.amd64\\lib\\site-packages\\pipenv'`
Python location: `'C:\\toolbase\\python\\3.9.5.0.0\\python-3.9.5.amd64\\python.exe'`
OS Name: `'nt'`
User pip version: `'23.3.2'`
user Python installations found:
Traceback (most recent call last):
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\Scripts\pipenv.exe\__main__.py", line 7, in
# when invoked as python -m pip
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 1157, in __call__
return self.main(*args, **kwargs)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\cli\options.py", line 58, in main
return super().main(*args, **kwargs, windows_expand_args=False)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 1078, in main
rv = self.invoke(ctx)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 1666, in invoke
rv = super().invoke(ctx)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\decorators.py", line 92, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\click\decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\cli\command.py", line 134, in cli
get_pipenv_diagnostics(state.project)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\help.py", line 32, in get_pipenv_diagnostics
finder = pythonfinder.Finder(system=False, global_search=True)
File "", line 8, in __init__
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\pythonfinder\pythonfinder.py", line 24, in __post_init__
self.system_path = self.create_system_path()
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\pythonfinder\pythonfinder.py", line 30, in create_system_path
return SystemPath.create(
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\pythonfinder\models\path.py", line 544, in create
instance._run_setup()
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\pythonfinder\models\path.py", line 182, in _run_setup
path_instances = [
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\site-packages\pipenv\vendor\pythonfinder\models\path.py", line 185, in
if exists_and_is_accessible(Path(p.strip('"')).resolve())
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\pathlib.py", line 1205, in resolve
s = self._flavour.resolve(self, strict=strict)
File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\pathlib.py", line 206, in resolve
s = self._ext_to_normal(_getfinalpathname(s))
PermissionError: [WinError 5] Access is denied: 'C:\\WINDOWS\\system32\\config\\systemprofile'
Thank you for the issue report, it would be helpful to open a similar issue in pythonfinder to track there as that is where any fix would need to be applied.
Issue description
The
pythonfinder.Finder
dataclass, which tries to search all paths on thePATH
environment variable somehow tries to access some system32 folders and throws an exception when that is not accessible. This happens with every pipenv call that tries gather information on the installed python versions, which means evenpipenv --support
broke.Expected result
As I gave the
--python
option with a path to mypython.exe
on the commandline, I expected pipenv to completely ignore the pathsearch in the first place. When I don't give that option, I expect the pathsearch to skip non-accessible paths.Actual result
Steps to replicate
A simple
pipenv install
will do on my system (Windows 10, Python 3.9.5, pipenv 2023.12.1).Minimal pipfile:
``` [[source]] url = "https://credentials@our-artifactory.com/artifactory/api/pypi/python-virtual/simple" name = "pypi" verify_ssl = true [dev-packages] python-dotenv = {version = ">=0.21.0"} requests = {version = ">=2.29.0"} [packages] Sphinx = {version = ">=6.2.1"} furo = {version = ">=2023.3.27"} [requires] python_version = "3.9.5" [pipenv] allow_prereleases = true install_search_all_sources = true ```My PATH env variable:
``` C:\Program Files\PowerShell\7 C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.16.10261.0_x64__8wekyb3d8bbwe C:\Program Files\Python312\Scripts\ C:\Program Files\Python312\ C:\Program Files (x86)\Vector vFlash 9\Bin\Automation\ C:\Program Files (x86)\Vector vFlash 8\Bin\Automation\ C:\Program Files (x86)\Vector vFlash 7\Bin\Automation\ C:\Progra~1\Rational\ClearCase\bin C:\WINDOWS\system32 C:\WINDOWS C:\WINDOWS\System32\Wbem C:\WINDOWS\System32\WindowsPowerShell\v1.0\ C:\WINDOWS\System32\OpenSSH\ C:\Program Files\RedHat\java-1.8.0-openjdk\missioncontrol\ C:\Program Files\RedHat\java-1.8.0-openjdk\webstart\ C:\Program Files\RedHat\java-1.8.0-openjdk\bin C:\Program Files\RedHat\java-1.8.0-openjdk\jre\bin C:\Program Files\Rational\common C:\Program Files (x86)\IBM\gsk8\lib C:\Program Files (x86)\IBM\gsk8\bin C:\Program Files\Rational\ClearCase\RemoteClient\cteapis C:\Program Files\gs\gs9.21\bin C:\Program Files\Git\cmd C:\Program Files\dotnet\ C:\Program Files\MATLAB\R2020b\runtime\win64 C:\Program Files\MATLAB\R2020b\bin C:\Program Files\MATLAB\R2019b\runtime\win64 C:\Program Files\MATLAB\R2019b\bin C:\Program Files\MATLAB\R2017b\runtime\win64 C:\Program Files\MATLAB\R2017b\bin C:\Program Files\MATLAB\R2015b64\runtime\win64 C:\Program Files\MATLAB\R2015b64\bin C:\Program Files\MATLAB\R2015b64\polyspace\bin C:\WINDOWS\system32\config\systemprofile\.dnx\bin C:\Program Files\Microsoft DNX\Dnvm\ C:\Program Files\Microsoft SQL Server\120\Tools\Binn\ C:\Program Files\Microsoft SQL Server\130\Tools\Binn\ C:\Program Files\MATLAB\MATLAB Runtime\v97\runtime\win64 C:\Program Files\7-Zip C:\Program Files\Anaconda3\condabin C:\Program Files (x86)\Plantronics\Spokes3G\ C:\Program Files (x86)\dotnet\ C:\Program Files\MiKTeX 2.9\miktex\bin\x64\ C:\Program Files (x86)\RedHat\java-1.8.0-openjdk\webstart\ C:\Program Files (x86)\RedHat\java-1.8.0-openjdk\bin C:\Program Files (x86)\RedHat\java-1.8.0-openjdk\jre\bin C:\Program Files (x86)\Vector CANdb++ 3.1\Exec32 C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\ C:\Program Files\PowerShell\7\ C:\Program Files\nodejs\ C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin C:\toolbase\cmake\3.20.2\bin C:\Program Files\MATLAB\R2020b\bin\win64 C:\app\ninja C:\Users\USERNAME\.dnx\bin C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps C:\Users\USERNAME\AppData\Local\Programs\Microsoft VS Code\bin C:\Users\USERNAME\AppData\Local\Gpg4win\..\GnuPG\bin C:\Program Files\Anaconda3 C:\Program Files\Anaconda3\Scripts C:\Users\USERNAME\AppData\Roaming\Python\Python38\Scripts C:\app\cygwin64\bin C:\Program Files\MATLAB\R2017b\bin\win64 C:\Users\USERNAME\AppData\Local\Programs\oh-my-posh\bin C:\Program Files\Anaconda3\Library\bin C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps C:\Users\USERNAME\AppData\Roaming\Python\Python39\Scripts C:\app\Graphviz\bin C:\Users\USERNAME\AppData\Local\Pandoc\ C:\Users\USERNAME\AppData\Local\Programs\Neovim\bin C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\vcpkg C:\Users\USERNAME\AppData\Roaming\npm C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64 C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\Scripts ```I added the closing
</details>
tag manually!$ pipenv --support
Pipenv version: `'2023.12.1'` Pipenv location: `'C:\\toolbase\\python\\3.9.5.0.0\\python-3.9.5.amd64\\lib\\site-packages\\pipenv'` Python location: `'C:\\toolbase\\python\\3.9.5.0.0\\python-3.9.5.amd64\\python.exe'` OS Name: `'nt'` User pip version: `'23.3.2'` user Python installations found: Traceback (most recent call last): File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\toolbase\python\3.9.5.0.0\python-3.9.5.amd64\Scripts\pipenv.exe\__main__.py", line 7, in