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

使用auto-py-to-exe(基于PyInstaller)打包Pandas代码遇TypeError

解决auto-py-to-exe打包Pandas时scipy hook加载失败的问题

以下是几种无需重装整个原环境的解决方案,按优先级排序:

1. 修复scipy安装

原环境中scipy可能存在安装损坏或路径异常,导致PyInstaller无法识别其位置:

  • 卸载并重装scipy:
    pip uninstall -y scipy
    pip install scipy
    
  • 若使用conda环境:
    conda remove --force scipy
    conda install scipy
    

2. 自定义hook跳过scipy加载错误

PyInstaller的hook-scipy.py未处理get_module_file_attribute('scipy')返回None的情况,可通过自定义hook覆盖官方逻辑:

  • 在项目根目录创建hook-scipy.py,写入以下内容:
    from PyInstaller.utils.hooks import get_module_file_attribute
    
    def hook(hook_api):
        try:
            # 尝试获取scipy路径,避免抛出TypeError
            scipy_path = get_module_file_attribute('scipy')
            # 保留原hook的必要逻辑(如需)
        except TypeError:
            # 路径获取失败时直接跳过,不触发报错
            pass
    
  • 在auto-py-to-exe的Advanced选项中,添加参数--additional-hooks-dir .,将当前目录设为自定义hook目录。

3. 升级相关依赖版本

旧版本的PyInstaller或pandas可能存在兼容性问题,升级到最新版可修复hook逻辑缺陷:

pip install --upgrade auto-py-to-exe pyinstaller pandas

4. 克隆原环境用于打包

无需修改原环境,复制一份干净的环境来执行打包操作:

  • 导出原环境依赖列表:
    pip freeze > requirements.txt
    
  • 创建新虚拟环境并安装所有依赖:
    python -m venv pack_env
    # Windows激活环境:pack_env\Scripts\activate
    # Linux/macOS激活环境:source pack_env/bin/activate
    pip install -r requirements.txt
    pip install auto-py-to-exe
    
  • 在新环境中执行打包操作,原环境不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:32:15