使用PyInstaller将.py转为.exe后运行提示:No module named numpy
解决PyInstaller打包exe后提示"No module named numpy"的问题
这种情况我碰到过好几次,PyInstaller有时候对某些依赖的自动检测会“走神”——虽然你的代码里直接导入了numpy,而且pandas也依赖它,但打包工具可能没把它正确纳入到可执行文件里。给你几个靠谱的解决办法,按顺序试试:
打包命令里显式指定numpy为隐藏依赖
在使用PyInstaller打包时,加上--hidden-import numpy参数,强制让PyInstaller把numpy包含进去。比如你的脚本叫your_script.py,命令就是:pyinstaller --hidden-import numpy your_script.py如果还有其他类似的依赖问题,也可以用同样的方式添加多个
--hidden-import参数。确保在正确的环境里打包
如果你用了虚拟环境,一定要先激活对应的环境,确认numpy已经安装在这个环境里(可以用pip list查看)。有时候不小心在全局环境里打包,而虚拟环境的依赖没被识别到,就会出现这种问题。清理PyInstaller缓存后重新打包
旧的build文件夹、dist文件夹或者spec文件可能残留了错误的依赖信息,先把这些文件删除,然后重新运行打包命令。步骤大概是:- 删除当前目录下的
build、dist文件夹,以及your_script.spec文件 - 重新执行打包命令(最好带上前面说的
--hidden-import numpy)
- 删除当前目录下的
通过spec文件手动添加依赖
如果上面的方法都不行,可以生成spec文件,手动修改依赖配置:- 先生成spec文件:
pyinstaller your_script.py - 打开生成的
your_script.spec文件,找到hiddenimports这一行,把numpy添加进去,比如:hiddenimports=['numpy'], - 用spec文件重新打包:
pyinstaller your_script.spec
- 先生成spec文件:
更新numpy和PyInstaller版本
有时候版本不兼容也会导致这种问题,先升级numpy和PyInstaller试试:pip install --upgrade numpy pyinstaller升级完成后再重新打包。
内容的提问来源于stack exchange,提问作者Stef
相关产品推荐
相关产品推荐

