PyInstall打包多个py文件成exe

首先定位到需要打包的文件目录,如笔者的目录:
在这里插入图片描述
Main.py文件就是我需要打包的主文件,D:…\A13就是我需要的目录。
打开anaconda prompt窗口(或者cmd窗口,cmd窗口我没试过,不确定能否成功),定位到上面的目录,如图所示:
在这里插入图片描述
输入打包命令:

pyinstaller -F -c main.py -p doc2vecTraining.py 

Main.py是主程序,-p之后是相关的py文件,如果还需添加py文件,依然是-p xxx.py,直至写完。-F表示将所有配置资源都打包成一个文件,也可将-F改为-D表示生成目录;-c表示显示命令行窗口,也可将-c改为-w表示不显示命令行窗口,不过显示命令行窗口可以看见你的错误,方便解决;具体参数解释可参考pyinstall的官网介绍,也可参考下面的博文,解释较清楚:
https://blog.csdn.net/weixin_39000819/article/details/80942423
执行完这条命令后报错:
在这里插入图片描述
这时在你的打包目录下,会生成一个main.spec文件,在这个文件中加入代码:

import sys  
sys.setrecursionlimit(1000000)

然后执行将之前执行的命令中的main.py改成main.spec,即

pyinstaller -F -c main.spec -p doc2vecTraining.py

在这里插入图片描述
看到这个运行,就表示exe生成成功了。
但是运行exe的时候还会出现很多问题,以下是笔者碰到的问题总结:
(1)报错:No module named xxx
在这里插入图片描述
解决方法:在spec文件中导入隐含包
Hiddenimports=[‘wx._html’],如图所示:
在这里插入图片描述
(2)找不到文件
解决方法:如果程序使用到的一些文件如TXT文件,是用相对路径引用的话,exe文件应该和这些文件在同一目录下;或者将源码中的相对路径改为绝对路径。
(3)exe在本机上可以成功运行,但在其他电脑的无法运行
在这里插入图片描述
出现这个问题的情况很有可能是其他电脑上没有装程序中用到的包或者库,我的问题是在我的程序中用到了jieba库,但是在其他电脑上可能没有安装jieba等第三方库,导致程序找不到相关的依赖文件。
解决方法:首先在源码文件main.py所在的目录下,新建一个static文件夹,找到库包文件目录(比如我的是D:\anaconda3\Lib\site-packages\jieba),复制到该目录下,其他第三方库同理,如笔者的:
在这里插入图片描述
第二步,打开main.spec文件,找到下面这段:
在这里插入图片描述
其中一行:datas=[],
修改为:datas=[(‘static’,’.’)];
意思是把static目录下的内容打包,并且在运行是将该目录下的内容释放到临时目录的相对位置,此处设置的’.’就表示临时目录本身。
最后再重新执行pyinstaller -F -c main.spec -p doc2vecTraining.py命令,重新打包,将整个文件夹都打包到其他电脑上,exe就能成功运行了。
相关博文:
http://blog.sina.com.cn/s/blog_53d6797101030588.html

https://www.cnblogs.com/7rhythm/archive/2018/12/29/10196745.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值