python 打包 exe程序 ——注意事项以及运行exe报错【ModuleNotFoundError: No module named ‘xxx’】
只说打包成单文件——【仅针对win系统】
步骤:
1、写脚本
2、在当前环境下安装pyinstaller
3、打开终端界面【terminal】
(1)切换到当前程序所在路径
(2)运行打包命令: pyinstaller -F xx.py -n newname
(3) 打包成功显示如下界面
4、 cmd命令打开dos窗口输入 exe文件对应的路径/名称即可 具体输入见下
但是!!! 它报错了,原因大概就是我程序中导入了 from sqlalchemy import xxx,但是打包的过程中,没有找到这个sqlalchemy包。
此时解决办法:
法1:
1、修改打包时相应生成的spec文件的里的 【hiddenimports 】缺啥补啥
2、补完以后,其他不要动,在 terminal窗口,打包spec文件 命令 pyinstaller write.spec (回车)
3、然后打开cmd,进行上述4的步骤,看看是否还缺新包,要是缺其他包,就一直按这个过程进行下去,知道把所有的包都补齐
4、但是,这个方法它解决不了我的问题,运行结果它依旧报一模一样的错。。。具体解决看法2
法2:
反正就是依赖包的问题,么得办法,只能硬着头皮看看依赖环境,打开lib竟然神奇的发现它竟然没有我的sqlalchemy,
一看sqlalchemy竟然在site-package里,真是天助我也,把sqlalchemy从site-package复制到lib里
然后把刚刚打包完成的那些文件都删了,重新打包,这次运行终于缺的是另一个文件了
那就继续从site-package里复制到lib里,再删除之前打包文件,重新打包,运行——最后看见了胜利的曙光
总结:大概之前两个文件我都是在pycharm--setting中点击安装的,所以就安装在了site-package里,而打包时只读取lib的文件,因为lib里没有,所以运行时会报错【以上总结纯属个人猜测,至于是否正确我也不知哦~】