【Python可执行文件生成】使用pyinstaller对多个文件的Python项目生成可执行(.exe)文件

【Python可执行文件生成】使用pyinstaller对多个文件的Python项目生成可执行(.exe)文件

前言

Python的单件模式(Singleton)和接口模式(Interface)
我在上面这篇博客谈到了:将C++的工程计算代码转成Python代码时,两个常见的设计模式(单件模式和接口模式)的C++代码和Python代码实现的区别。

OK,我花了一周的时间完成了代码的转换(快夸夸我哈哈哈)。紧接着的一个问题就是可执行文件的生成。生成可执行文件的原因有如下几点:

  1. 你需要把代码发给一个完全不懂代码的人,比如你完成了一个小游戏,但是你不能指望玩你这个游戏的小孩子都懂Python。但是小孩子还是懂双击运行.exe文件的。
  2. 知识产权保护。当你的代码具有知识产权时,往往不希望被人白嫖,这种时候就需要生成二进制的可执行文件,这样就可以保证只有电脑能看懂你的代码。
  3. 跨电脑运行。很多时候你在自己电脑上完成了代码并且运行通过了,你的老板想在他的电脑上跑一下你的代码看看运行效果。但是你老板电脑上什么环境都没配置过,这种时候就比较适合提供一个简单的.exe文件,比较节省时间。

去网上一搜,基本上都是单个Python文件如何生成exe文件,难得的几篇多文件生成的文章,要么是讲述的很乱,要么就是存在问题。所以我在这里理了一下如何使用pyinstaller对多个文件的Python项目生成可执行(.exe)文件。

多文件项目的可执行文件生成

环境准备

  1. 安装pyinstaller

     $ pip install pyinstaller
    
  2. 确保你的python版本为2.7或者3.4~3.7

     $ python --version
    
  3. 我相信你自己项目内的环境肯定已经配置好了,比如科学计算常用的numpy库,作图常用的matlibplot库,人工智能常用的pytorch库或者计算机视觉常用的opencv-python库等等。(一般你的项目能正常在命令行中运行就已经配置好了。)

可执行文件生成

假设你的项目文件结构为:

- project
	- folder1
		- file1-1.py
		- file1-2.py
		- ...
	- folder2
		- file2-1.py
		- file2-2.py
		- ...
	- main.py
	- other1.py
	- other2.py
	- ...

我们先来看一下pyinstaller的命令:

$ pyinstaller -F [主文件] -p [文件夹] --hidden-import [模块文件]

简单解释一下各个参数:

  • -F:Create a one-file bundled executable. 使用该参数会只生成一个单独的exe文件,如果不使用该参数会生成一堆依赖文件。
  • 主文件:就是程序运行的入口文件,例如上面的main.py
  • -p [文件夹]: A path to search for imports (like using PYTHONPATH). Multiple paths are allowed, separated by ‘;’, or use this option multiple times. 该参数后面跟项目下的文件夹名称。
  • --hidden-import [模块文件]: Name an import not visible in the code of the scripts(s). This option can be used multiple times.该参数后面跟"project"目录下零散的单独文件,例如上面的other1.py和other2.py等等。

(上面的英文直接摘取的pyinstaller的帮助文档,可以保证我说的是正确的。)
一般我们为了项目的干净,会把exe文件生成到一个专门的build文件夹中,假定我们在project目录下新建了一个build文件夹如下面所示:

- project
	- build
	- folder1
	- folder2
	- main.py
	- other1.py
	- other2.py
	- ...

在build文件下运行终端。(如果你安装了git的话,直接进到build文件夹中,然后右键选择Git Bash Here就能打开一个终端。如果你是Windows系统,进到build文件夹中,按住Shift右键选择在此处打开PowerShell窗口。如果你是Linux或者Mac OS系统,平常使用终端都是家常便饭,我就不赘述了。)以上述项目文件结构为例,运行如下命令:

$ pyinstaller -F ../main.py -p ../folder1 -p ../folder2 --hidden-import ../other1.py --hidden-import ../other2.py

如果有其他文件夹和文件,按照上面的方法添加 -p 和 --hidden-import 选项即可。需要注意一点:文件夹或文件的路径需要给出相对路径,例如 . ./main.py

运行完上述命令之后,我们可以在build文件夹下找到两个新生成的文件夹build和dist,dist文件夹下就是相应的exe文件(exe文件的名称和主文件的名称相同),这个exe文件可以拷贝到任意位置运行(build文件夹里的东西可以不管),最后的文件结构为:

- project
	- build
		- build
		- dist
			- main.exe
	- folder1
	- folder2
	- main.py
	- other1.py
	- other2.py
	- ...

祝大家编程愉快!!!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值