关于多个py文件使用pyinstaller打包成exe遇到的问题

一、pyinstaller是什么?

pyinstaller是一款专门用于打包编译python脚本的工具。在使用时,pyinstaller将python应用程序及其所依赖的库捆绑到一个包中,用户可以运行打包的应用程序,而无需安装python解释器或任何模块。

二、pyinstaller的使用

1.安装pyinstaller

由于pyinstaller安装需要很多依赖库,而其又是可以通过PyPI安装的,因此一般建议使用pip安装。

pip install pyinstaller

通常安装过程会十分顺利,当下载速度过慢时,可以使用清华镜像源进行安装:

pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

2.编译过程

pyinstaller读取编写好的python脚本,它会分析脚本源码,发现脚本执行所需的所有其他模块和库,然后它收集所有这些文件的副本,包括活动的python解释器,然后将它们与脚本一起放在单个文件夹中,或者可以选择放在单个可执行文件中。
例如,我们要将call.py这个文件编译成为二进制文件,其运行过程如下:

pyinstaller call.py

运行结束后,会在当前目录下生成build和dist两个文件夹。其中,log日志文件和工作文件会存放到build目录下,而call.py生成的.exe文件会存放到dist文件夹中。

3.主要选项

在进行编译时,有许多选项供我们选择,最常用的

选项功能
-h,–help查看该模块的帮助信息
-F,-onefile产生单个的可执行文件
-D,–onedir产生一个目录(包含多个文件)作为可执行程序
-w,–windowed,–noconsolc指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c,–nowindowed,–console指定使用命令行窗口运行程序(仅对 Windows 有效)
-o DIR,–out=DIR指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
-n NAME,–name=NAME指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

更多详细选项可以参考文章点击这里

三、使用过程中遇到的问题

1.个人配置

下面是我在进行编译时目录中的.py文件:在这里插入图片描述
其中,call是要进行编译的函数,但其没有实质性的窗口或方法,其作用是实例化主窗口以及子窗口并对他们分别进行调用,.ui文件使用pyqt5制作的,共有三个,首先是入口主窗口,其次是两个功能性的子窗口,而两个子窗口用到的所有方法与函数都放在image_processing.py文件中,所以在进行编译时要用到的.py文件总共五个,分别是call.py、begin.py、cut.py、change_pic.py和img_processing.py。

2.编译时的问题

在进行编译时,首先我使用的是

pyinstaller -F -w call.py

不出意外的失败了,生成的dist文件夹中并没有exe可执行文件。

随后,我在网上找了很多关于我这种多文件打包的文章,最终在这篇文章中找到和我类似的解决的办法。
多个.py文件打包命令格式如下:

pyinstaller [主文件] -p [其他文件1] -p [其他文件2] --hidden-import [自建模块1] --hidden-import [自建模块2]

以我的为例:
在这里插入图片描述
其中call.py是主程序入口文件,其他.py文件是自建模块,需要在主文件中使用。其代码为:

pyinstaller -F -w call.py -p begin.py -p cut.py -p change_pic.py -p img_processing.py --hidden-import begin --hidden-import cut --hidden-import change_pic --hidden-import img_processing

随后,顺利生成.exe可执行文件并能够成功运行。但其大小足足有460MB。因此,考虑编译时使用的环境是我的初试环境,里面安装了许多不必要的包,所以我新建了一个环境,仅安装程序需要的包。
——————————————————
都调试好以后,再运行上述的代码,却发现报错了,于是重新运行第一步的:

pyinstaller -F -w call.py 

最后成功生成.exe文件并运行成功,且.exe文件成功缩小到100MB。

总结

1、在使用pyinstaller生成.exe文件前,最好新建一个环境,并只安装该程序需要的库即可,当环境中安装过多的库时可能会导致程序生成失败。
2、多个程序使用pyinstaller生成.exe文件时,推荐首选第一种方法,即只对主程序入口文件进行生成。当第一种方法失败是,可以使用第二种方法对多个.py文件生成。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值