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

PyInstaller打包py转exe报Python.Runtime not found,已装pythonnet仍无效

问题原因

这个报错本质是PyInstaller自带的clr模块钩子无法识别pythonnet的安装路径,找不到核心依赖Python.Runtime.dll导致的,你之前找不到dll是因为没有定位到pythonnet的正确安装子目录。

解决步骤

  • 第一步:重装兼容版本的pythonnet
    先完全卸载当前版本的pythonnet,再安装稳定兼容版,确保安装到你打包所使用的Python环境中:
pip uninstall pythonnet -y
pip install pythonnet==3.0.1

安装完成后在对应Python的交互终端执行import clr,无报错则说明安装正常。

  • 第二步:定位Python.Runtime.dll文件
    打开对应Python环境的site-packages目录,进入pythonnet/runtime/子目录,即可找到Python.Runtime.dll,你当前使用的用户级Python3.8的完整路径参考:
C:\Users\ADMIN.DESKTOP-USLQ9P3\AppData\Roaming\Python\Python38\site-packages\pythonnet\runtime\Python.Runtime.dll

将该dll文件复制到你的项目根目录(和app.py同目录)。

  • 第三步:调整打包命令执行打包
    在原打包命令基础上增加二进制文件绑定和隐藏导入参数:
PyInstaller app.py --noconsole --icon=./images/Source.ico --add-binary "Python.Runtime.dll;." --hidden-import clr
  • 第四步(可选,上述步骤失效时使用):通过spec文件打包
    如果直接改命令仍然报错,打开第一次打包生成的app.spec文件,修改Analysis配置段:
a = Analysis(
    ['app.py'],
    binaries=[('Python.Runtime.dll', '.')], # 新增该行,路径按你实际dll位置调整
    hiddenimports=['clr'], # 新增该行
    # 其余原有配置保持不变
)

保存后执行打包命令:

PyInstaller app.spec
  • 第五步(极端情况备用):禁用冲突钩子
    如果官方hook持续报错,可在打包命令中加入参数直接禁用该钩子,跳过自动检测逻辑:
PyInstaller app.py --noconsole --icon=./images/Source.ico --add-binary "Python.Runtime.dll;." --hidden-import clr --exclude-module _pyinstaller_hooks_contrib.hooks.stdhooks.hook-clr

内容的提问来源于stack exchange,提问作者user14618630

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 19:36:03