当我在 Windows 上运行
py --version
时,出现此错误:
Unable to create process using '%LOCALAPPDATA%\Programs\Python\Python312\python.exe --version': The system cannot find the file specified.
但是,我在
C:\Program Files\Python312\
中正确安装了Python(由where python.exe
确认)。
运行
ftype
显示Python启动器已安装:
Python.ArchiveFile="C:\Windows\py.exe" "%L" %*
Python.CompiledFile="C:\Windows\py.exe" "%L" %*
Python.File="C:\Windows\py.exe" "%L" %*
Python.NoConArchiveFile="C:\Windows\pyw.exe" "%L" %*
Python.NoConFile="C:\Windows\pyw.exe" "%L" %*
并且
py -0p --list-paths
显示:
-V:3.12 * %LOCALAPPDATA%\Programs\Python\Python312\python.exe
启动器正在我的
AppData
文件夹中查找 Python(可能来自旧安装),但 Python 实际上安装在 Program Files 中。我该如何解决这个问题?
当 Python 启动器注册指向旧的/已删除的 Python 安装时,会出现此问题。问题出在 Windows 注册表中,Python 在指向不同位置的
HKEY_CURRENT_USER
(用户特定)和 HKEY_LOCAL_MACHINE
(系统范围)中注册。
您可以通过检查两个注册表位置来验证这一点:
reg query "HKEY_CURRENT_USER\Software\Python\PythonCore" /s
reg query "HKEY_LOCAL_MACHINE\Software\Python\PythonCore" /s
就我而言:
HKEY_CURRENT_USER
指向:%LOCALAPPDATA%\Programs\Python\Python312
(不存在)HKEY_LOCAL_MACHINE
指向:C:\Program Files\Python312
(正确位置)在管理员 CMD 中运行以下命令以删除错误的特定于用户的注册:
reg delete "HKEY_CURRENT_USER\Software\Python\PythonCore\3.12" /f
reg delete "HKEY_CURRENT_USER\Software\Python\PythonCore" /f
此后,Python 启动器将使用 HKEY_LOCAL_MACHINE 中正确的系统范围注册。
py --version
现在应该可以正常工作了py -0p --list-paths
应显示程序文件位置reg query "HKEY_CURRENT_USER\Software\Python\PythonCore" /s
应该什么也找不到这通常发生在以下情况:
AppData
)旧的用户特定注册表项可能会保留,导致 Python 启动器查找错误的位置。
如果您希望重新开始,您可以:
这将确保干净的注册表项。