pyinstaller 打包 提示 ModuleNotFoundError: No module named ‘xxx‘

重点:不要在全局环境 pip install pyinstaller。习惯各个项目独立环境的,就不要在全局环境 pip install pyinstaller,不小心安装了的,也请删掉。很容易一不小心掉坑。

因为有时忘记启动venv,调用路径就是全局的路径。启动了venv,但该venv没有安装pyinstaller,开发调试顺利,打包ModuleNotFoundError

对于新手来说 pyinstaller 坑还是比较多的。

1、首先遇到的是闪退问题。

解决办法:

在打包的py文件主函数最后一行添加以下代码

 input("please input any key to exit!")

然后把exe拖进cmd命令窗口,回车运行,就能够看到报错信息了。

》》》注意打包时不能带 --noconsole参数,否则就算在cmd窗口也看不到报错信息的。例如:pyinstaller test.py --noconsole 生成的test.exe 拖到cmd窗口执行,出错了,错误信息也不会显示出来

2、提示 ModuleNotFoundError: No module named 'xxx'

试了百度的那些方法,都不太好使,虽然加入 --hidden-import参数和绝对路径能解决,但缺好多module啊,每次仅能修一个好痛苦。

后来我试了最简单的,创建一个全新的venv环境,只有一个.py文件,整个程序只import一个module(我用MySQLdb这个module测试),在pycharm的terminal里面也成功pip install mysqlclient了。

生成的exe,依然提示ModuleNotFoundError: No module named 'MySQLdb'。

我突然想起,这个venv环境里,我并没有安装过pyinstaller这个包( pip install pyinstaller ) 所以,我在pycharm的terminal中执行 pyinstaller test.py时,调用的是全局环境的pyinstaller,而全局环境中没有安装mysqlclent。在pycharm的terminal中执行 pyinstaller test.py时,全局的pyinstaller仅在全局环境中找mysqlclent,找不到就没有导入了。

解决方案:

1、先在venv环境中安装pyinstaller这个包,

2、然后在venv环境中(terminal)执行 pyinstaller test.py

允许test.exe 成功!没有报错了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值