Windows应用如何检测Python安装?DaVinci Resolve版本适配问题排查
背景与问题
我系统中安装了Python 3.12用于个人编程,同时安装的Windows应用DaVinci Resolve需依赖Python 3.6以提供特定功能。但该应用持续检测并加载Python 3.12,导致后续依赖Python 3.6的脚本API无法正常工作。我已验证应用可成功加载Python 3.12,能通过命令查看sys.path和platform.python_version(),但版本不匹配引发功能异常。
已尝试操作
- 仅保留Python 3.6在
%PATH%中,应用仍加载Python 3.12(已通过命令行echo %PATH%和应用内print(sys.path)验证) - 临时重命名Python 3.12文件夹隐藏它,应用提示系统未安装Python,而非检测到Python 3.6
核心疑问
Windows应用定位Python安装的非PATH类标准方法有哪些?(已排除PATH路径方式,仅需专业Python用户熟知的标准方法)
专业解答:非PATH类Python定位方法
1. 注册表查询
Python安装时会向Windows注册表写入关键路径信息,绝大多数Windows应用会优先查询以下注册表项:
- 系统级(全局安装):
HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\<版本号>\InstallPath(适用于64位系统的64位Python,或32位系统) - 用户级(仅当前用户安装):
HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\<版本号>\InstallPath - 64位系统上的32位Python:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\<版本号>\InstallPath
很多应用会读取注册表中标记为DefaultPython的版本,或按版本号降序选择最高版本,这很可能是DaVinci Resolve自动选中3.12的原因。
2. 硬编码路径
部分应用会将Python路径直接写入配置文件或程序二进制代码中。比如DaVinci Resolve可能在其安装目录或用户配置目录(如AppData\Roaming\Blackmagic Design\DaVinci Resolve)下的.ini/.json配置文件里指定了Python路径,或者程序内部直接硬编码了查找逻辑。
3. Windows Python Launcher (py.exe)
Windows官方提供的py.exe(通常位于C:\Windows\)是专门用于管理多Python版本的工具。应用可能会调用py.exe,如果未指定具体版本,py.exe会根据py.ini配置文件或注册表中的默认版本选择。若你的py.exe默认指向3.12,应用调用时就会加载高版本。
4. 应用捆绑环境(部分场景)
少数应用会自带独立的Python环境,但DaVinci Resolve显然未采用这种方式,不过仍可检查其安装目录下是否有隐藏的Python子文件夹。
针对DaVinci Resolve的快速解决方案建议
- 检查DaVinci Resolve的配置文件:在安装目录(
C:\Program Files\Blackmagic Design\DaVinci Resolve)或用户配置目录(%APPDATA%\Blackmagic Design\DaVinci Resolve)中查找含Python路径的配置项,手动修改为Python 3.6的安装路径。 - 修改注册表默认版本:在
HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore下找到DefaultPython项,将值改为3.6;或在C:\Windows\py.ini中添加[defaults] python=3.6,强制py.exe优先使用3.6版本。
内容的提问来源于stack exchange,提问作者jeancallisti

