You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多Python版本共存时直接执行脚本出现库加载不匹配的问题排查

多Python版本共存时直接执行脚本出现库加载不匹配的问题排查

看起来你遇到了多Python版本共存环境下,直接执行.py脚本时的模块加载冲突问题,我帮你一步步拆解原因和解决办法:

先明确问题现象

  • 直接运行 globaj.py 时触发 AssertionError: SRE module mismatch 错误
  • 但通过 python globaj.py 执行脚本却完全正常
  • 系统中安装了Python 3.13、3.11等多个版本,PATH 里Python3.13的路径排在最前,python --version 和 py --version 都显示是3.13.1
  • 文件关联配置显示 .py=Python.File,而 Python.File 指向系统的 py.exe 启动器

问题核心原因

直接执行脚本时调用的是Windows的Python Launcher(py.exe),它会根据脚本shebang行、本地版本配置文件、环境变量等优先级来选择Python版本,大概率是它误加载了Python3.11的SRE模块,导致和Python3.13的库版本不匹配。

具体排查和解决步骤

  • 检查脚本的shebang声明:看看你的globaj.py开头有没有类似 #!/usr/bin/env python3.11 的行,如果有,py.exe会优先用这个版本执行,自然会出现模块冲突。把它改成 #!/usr/bin/env python3.13 或者直接删除shebang行即可。
  • 检查本地版本配置文件:查看当前脚本目录下有没有 .python-version 或者 pyproject.toml 文件,里面如果指定了Python3.11作为默认版本,修改成3.13或者删除这些文件。
  • 排查干扰性环境变量:
    打开命令行执行以下命令,查看是否存在指向Python3.11的环境变量:
    set PYTHONHOME
    set PYTHONPATH
    
    如果有输出内容(比如指向C:\Program Files\Python311),临时清除这些变量再试:
    set PYTHONHOME=
    set PYTHONPATH=
    
    之后再直接运行脚本,看是否恢复正常。如果正常,就去系统环境变量里永久删除这些错误的配置。
  • 强制指定py.exe使用3.13版本:
    可以在脚本开头添加 #! python3.13,或者直接用以下命令执行脚本:
    py -3.13 globaj.py
    
    如果这样执行正常,说明py.exe的默认版本选择逻辑有问题,需要调整默认版本。
  • 修改py.exe的默认版本:
    可以通过修改py.ini文件来设置默认版本,这个文件通常在C:\Windows\py.ini或者%USERPROFILE%\py.ini路径下,打开后添加以下内容:
    [global]
    default=3.13
    
  • 直接修改文件关联到指定Python版本:
    如果不想依赖py.exe的版本选择逻辑,直接把.py文件关联到Python3.13的执行程序:
    assoc .py=Python.File
    ftype Python.File="C:\Program Files\Python313\python.exe" "%L" %*
    

总结

本质问题是直接执行脚本时,py.exe没有正确选用Python3.13,反而加载了Python3.11的SRE模块导致版本不兼容。通过上述步骤排查shebang、本地配置、环境变量,或者直接固定文件关联的Python版本,就能解决这个冲突问题。

备注:内容来源于stack exchange,提问作者watbywbarif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 13:14:35