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

使用PyInstaller打包Python教育脚本生成.exe时遇源码获取错误求助

解决PyInstaller打包含inflect库脚本时的"could not get source code"错误

问题根源

你的脚本在PyCharm中正常运行,但打包成单文件exe后报错,是因为inflect依赖的typeguard库在初始化时会调用inspect.getsource()获取源码做类型验证。而PyInstaller的--onefile模式会把所有代码打包成字节码,运行时解压到临时目录,没有保留原始.py源文件,导致inspect模块无法获取源码,抛出异常。

解决方案

以下是几种可行的解决方法,按优先级尝试:

  • 方法1:打包时收集inflect的所有依赖文件
    修改PyInstaller命令,添加--collect-all inflect参数,确保inflect及其关联的typeguard相关文件都被完整打包:

    pyinstaller --onefile -w --collect-all inflect main.py
    
  • 方法2:禁用typeguard的运行时类型检查
    在脚本最开头、导入inflect之前,添加环境变量禁用typeguard的检查,跳过源码获取步骤:

    import os
    os.environ["TYPEGUARD_DISABLE"] = "1"
    
    # 之后再导入inflect等库
    import inflect
    import tkinter as tk
    import num2words
    
  • 方法3:降级inflect版本
    部分新版本inflect对typeguard的依赖更严格,尝试降级到5.6.0版本(该版本未引入导致此问题的typeguard逻辑):

    pip install inflect==5.6.0
    

    之后重新打包即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:52:04