使用pyinstaller打包多文件项目成一个exe

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用pyinstaller打包多文件项目成一个exe相关的知识,希望对你有一定的参考价值。

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

使用pyinstaller将Python打包为exe文件

当我们完成一个Python项目或一个程序时,希望将Python的py文件打包成在Windows系统下直接可以运行的exe程序,那么pyInstaller就是一个很好的选择。pyInstaller可以将Python程序打包成Windows(当然也包括Linux, Mac OS X, Solaris and AIX)下可执行的EXE文件。

1. 安装pyinstaller

官网下载地址:http://www.pyinstaller.org/downloads.html

可以看到官网提供了两种安装的方式:1)通过pip直接安装;2)下载源码,在本地编译安装。

(1)通过pip安装

 方式一:直接安装

pip install pyinstaller

方式二:通过升级的方式更新到较新的版本

pip install --upgrade pyinstaller

方式三:直接安装当前开发版本

pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz

(2)下载源码,在本地编译安装

访问上述官网下载地址,下载源码安装包,然后解压安装包,打开cmd并进入安装包解压目录,可以看到该目录下有一个setup.py的文件

运行安装指令:

python setup.py install

当看到“Finished processing dependencies for PyInstaller==3.5.dev0+0d289e49b”字样,说明安装成功,也可以通过 pyinstaller -v 命令查看是否安装成功

2.pyinstaller依赖安装

使用pyinstaller需要安装windows拓展Pywin32

下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/Build 221/

3. pyinstaller使用

先来看一下pyinstalller有哪些那些常用参数:

参数含 义
-F, --onefile 打包一个单个文件,只生成一个exe文件。如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
-D, --onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,代码易于维护,推荐使用
--distpath 指定生成的exe存放的目录(.\\dist)
--workpath 指定编译中临时文件存放的目录(.\\build)
-i, --icon 指定exe图标
-p, --paths 指定exe依赖的包、模块
-d, --debug 产生debug版本的可执行文件.编译为debug模式,获取运行中的日志信息
--clean 清理编译时临时文件
-c, --console, --nowindowed 使用控制台(默认方式)
-w,  --windowed, --noconsole 使用窗口
--version-file 添加exe版本信息
-v, --version 版本信息查看
-h, --help 查看帮助

示例:

(1)生成一个控制台程序

pyinstaller test.py

(2)只生成一个EXE文件

pyinstaller -F test.py

(3)只生成一个EXE文件的窗口程序

pyinstaller -F -w test.py

(4)生成一个图标为my.icon的程序

pyinstaller -F --icon=my.icon test.py

 

以上是关于使用pyinstaller打包多文件项目成一个exe的主要内容,如果未能解决你的问题,请参考以下文章

使用pyinstaller将Python打包为exe文件

Python利用pyinstaller工具将py文件打包成.exe可执行文件

Python打包-Pyinstaller

Pyton项目打包成exe文件

python文件封装成*.exe文件(单文件和多文件)

[Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件