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

PyInstaller打包exe遇Numpy导入错误求助(版本1.26.4/6.7.0)

解决PyInstaller 6.7.0打包Pandas脚本时Numpy导入错误问题

问题重现

使用PyInstaller 6.7.0打包依赖Pandas的.py文件为.exe,打包流程无报错,但运行生成的.exe时触发Numpy导入错误:

Traceback (most recent call last):
  File <Filename>, line 17, in <module>
  File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
  File "pandas\__init__.py", line 47, in <module>
ImportError: Unable to import required dependencies:
numpy: Error importing numpy: you should not try to import numpy from
      its source directory; please exit the numpy source tree, and relaunch your python
interpreter from there.
[27328] Failed to execute script <Filename> due to unhandled exception!

有效解决方案

以下是经验证的永久解决方法,按优先级尝试:

1. 清理PyInstaller缓存后重新打包

PyInstaller缓存目录可能残留旧的Numpy路径信息,导致运行时误判为源码目录。执行命令:

pyinstaller --clean your_script.py

--clean参数会自动删除build、dist目录及临时缓存文件,确保打包使用最新的依赖路径。

2. 基于干净的虚拟环境打包

系统全局环境可能存在Numpy源码目录或冲突依赖,用虚拟环境隔离依赖链:

  • 创建虚拟环境:
    python -m venv pandas_venv
    
  • 激活虚拟环境:
    • Windows:pandas_venv\Scripts\activate
    • Linux/macOS:source pandas_venv/bin/activate
  • 安装纯净依赖:
    pip install pandas pyinstaller==6.7.0
    
  • 执行打包:
    pyinstaller your_script.py
    

3. 添加Numpy运行时钩子修正路径

手动编写钩子文件强制Numpy跳过源码目录检查:

  1. 在脚本同目录创建hook-numpy.py,内容如下:
    import sys
    import os
    
    # 禁用Numpy的信号处理器,避免路径检查触发
    os.environ['NUMPY_DISABLE_SIGNAL_HANDLER'] = '1'
    # 移除可能存在的Numpy源码目录路径
    sys.path = [path for path in sys.path if not ('numpy' in path and 'src' in path)]
    
  2. 打包时指定钩子目录:
    pyinstaller --additional-hooks-dir=. your_script.py
    
    或直接修改生成的.spec文件,在Analysis部分添加runtime_hooks=['hook-numpy.py']后重新打包。

4. 重新安装二进制版本的Numpy

确保Numpy是通过pip安装的官方二进制包,而非源码编译或解压的源码目录:

pip uninstall -y numpy
pip install numpy --no-cache-dir

重新安装后再执行打包流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:07:14