使用pyinstaller打包一个多文件的项目,主函数的main.py
文件结构大概如下:
--code_1
----aa.py
--code_2
----bb.py
main.py
这里要将pyinstaller打包成一个exe,而且是单一的exe文件。
pyinstaller 的各个参数可以参考官方文档:https://pyinstaller.readthedocs.io/en/v3.3.1/usage.html
本文主要记录几个注意点:
1. 搭建好虚拟环境
如果你项目的环境是你的基础环境(base),那么可能会出现把本项目不需要的包依赖全部打包进去,导致最后生成的exe文件很大。所以建议要确保虚拟环境的正确性,尽量不要加载多余的包,毕竟,少一个包就少一个报错的隐患。
2. 多文件py问题
考虑到除主函数之外的py文件依赖的包会找不到,所以在打包时也要把这个问题解决好,目前网上找到两种方法,一种是先生成.spec文件,在.spec文件中修改后再继续打包,另一种是直接命令行生成exe,这里推荐第二种:
```
pyinstaller -p code_1的绝对路径;code_2的绝对路径 -F main.py
```
第二种方法的好处个人觉得首先他不需要对每个py文件进行列举,第二就是一次性一条命令解决问题,比较方便快速
3. No time zone found with key UTC
报这个错可能是你安装某些包时时区被你弄错了,建议先别急着按照其他帖说的修改源码等操作,可以试着重新安装虚拟环境,把所有包都重装下,我是最后没办法,重装了就好了。
4.某个包找不到问题
在打包过程中,命令行可能就会出现这些问题,但是一切要以执行exe为准,如果exe执行正常,那说明用不到那个模板,可以不用管,如果真的强迫症的话,可以加上hidden命令,详细去官网找。