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里没有,所以运行时会报错【以上总结纯属个人猜测,至于是否正确我也不知哦~】

 

 

 

 

 
posted @ 2022-11-20 19:03  Monster1728  阅读(1983)  评论(0编辑  收藏  举报