python桌面应用(pyinstaller打包多个py文件)

python桌面应用(pyinstaller打包多个py文件),第1张

一 、当写这篇文章的时候,pyinstaller官网版本对pyqt5打包可能会遇到Could not find QtWebEngineProcess.exe.的错误。解决方法为:

二 、如果有报错:“could not find or load the Qt platform plugin "windows" ”。原因之一可能是你把打包后的文件放在了中文目录下。只需要将打包后的文件放在英文目录下,就可以解决。

三、 多文件打包为单一文件时,即pyinstaller 命令中加入了-F,也可能会导致错误。尽量不要使用-F。

使用pyinstaller打包的时候,仅打包.py文件,其余依赖项只需在打包完成后,拷入打包生成的根目录即可。

命令格式如下,下命令为一条命令,为方便显示做了分行处理:

以上文图中结构为例,在根目录打开命令窗口,输入命令:

在目录结构:“程序根目录\dist\main\” 下可以找到生成的main.exe。将其他依赖文件拷贝进入“程序根目录\dist\main\” 下,即可运行。

=========吃鸡、撸码复古键盘=========

使用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命令,详细去官网找。

假设 main.py 脚本调用 bank.txt视频文件(main.py和bank.txt在同一级目录),那么将在main.py脚本需要这样写:

将多个资源文件最后都打包成一个文件,会临时进行解压,解压的目录为: C:\Users\用户名\AppData\Local\Temp\ 随机目录名, 而我们找到这个目录就需要 sys._MEIPASS 这个属性数值,而如果没有这个属性的普通运行情况 会返回 os.path.dirname(os.path.abspath(__file__)) 也就是普通寻找文件的情况。

注意: –add-data : 第一个参数 是要添加文件或路径 bank.txt. = bank.txt + + . ,然后是一个分割符 在windows上是linux上是 : 最后参数是 . 也就是打包后存在的路径,解压后的路径。在.spec里面结构如下:

你也可以通过 pyi-makespec 来生成 spec文件,然后进行修改。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11613827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存