Python Launcher (py.exe) 指向 AppData 中不存在的 Python 安装 - 如何修复?

问题描述 投票:0回答:1

当我在 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 windows registry python-launcher
1个回答
0
投票

当 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 中正确的系统范围注册。

验证修复:

  1. py --version
    现在应该可以正常工作了
  2. py -0p --list-paths
    应显示程序文件位置
  3. reg query "HKEY_CURRENT_USER\Software\Python\PythonCore" /s
    应该什么也找不到

为什么会发生这种情况:

这通常发生在以下情况:

  1. 首先仅为当前用户安装Python(转到
    AppData
  2. 稍后卸载
  3. 然后为所有用户安装 Python(转到 Program Files)

旧的用户特定注册表项可能会保留,导致 Python 启动器查找错误的位置。

替代解决方案:

如果您希望重新开始,您可以:

  1. 完全卸载Python
  2. 删除 AppData 中所有剩余的 Python 文件夹
  3. 使用以下命令重新安装 Python:
    • 选中“为所有用户安装”(安装到程序文件)
    • 选中“将 Python 添加到路径”

这将确保干净的注册表项。

© www.soinside.com 2019 - 2024. All rights reserved.