Pyinstaller库官方文档部分翻译---打包python脚本成可执行文件

参数使用

https://pyinstaller.readthedocs.io/en/stable/usage.html
在这里插入图片描述

D参数生成一个文件夹,里面包含了一个执行文件(默认情况),F参数生成一个可执行文件
在这里插入图片描述

c参数弹出一个console窗口用来i/o操作,windows下是默认的,使用w参数指定不要弹出console窗口,i参数指定执行文件的图标
把其他格式图片转成ico格式:https://app.xunjiepdf.com/img2icon/

在这里插入图片描述

add-data、add-binary参数用于将某些代码以外的资源文件也一起打包,后面详述(看Spec文件)

p参数用于添加导入库时用于寻找的路径(自己写的文件导入时跟导入库一样,因此多个py文件时需要使用p参数来提供路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

What PyInstaller Does and How It Does It

在这里插入图片描述

Analysis步骤时(即spec文件中的Analysis类),会对脚本中的import语句进行递归查找,直到得到一个完整的需要导入的模块列表

在这里插入图片描述

Pyinstaller能够解析Egg distribution format,能够从egg文件中导入模块
在这里插入图片描述

“Egg” is a single-file importable distribution format for Python-related projects. "
http://peak.telecommunity.com/DevCenter/PythonEggs
暂时不深入研究

在这里插入图片描述

Pyinstaller还知道许多主要的python库
在这里插入图片描述

有一些情况pyinstaller无法检测出导入了库,比如说使用__import__函数、imp.find_module函数来动态导入,还有运行时修改sys.path变量从而导入新修改的路径下面的模块
解决办法有:命令行处添加文件或添加导入路径,修改spec文件,写hook文件

在这里插入图片描述

如果程序依赖固定的文件,可以把这些文件一起打包,可以修改spec文件来实现
在这里插入图片描述

如果要在运行时定位被包含文件,需要能够获知它的运行路径
在这里插入图片描述

Pyinstaller不会包含操作系统的库(这样就不会那么大了,但是可能出现依赖问题)

在这里插入图片描述

默认方式是使用D参数来打包生成,即把依赖跟exe文件都放在dist文件夹下面了,可以直接整个文件夹打包发送给别人,直接运行即可,不用安装(绿色软件)
在这里插入图片描述

在这里插入图片描述

优势:
debug时方便,可以看到把什么依赖放入文件夹了
还有就是,如果修改代码,只要它导入的是相同的依赖,则可以直接发送更新后的执行文件,不用把依赖也重新发送一次(当然,若是修改了依赖,则必须要把依赖也重新发送)

在这里插入图片描述

劣势:对于小白可能一时找不到哪个是执行文件,要是一不小心修改删除了某个文件,也会执行不了

在这里插入图片描述

工作原理:由bootloader来模拟python解析器来执行脚本

在这里插入图片描述
在这里插入图片描述

the single executable is a little slower to start up than the one-folder bundle.
比one-folder bundle慢一点点
在这里插入图片描述

工作原理同样是:使用bootloader来模拟python解析器
点击执行时会创建一个临时文件夹(文件夹名称为_MEI+随机数字),bootloader会把可执行文件里面包含的非python代码文件解压出来到临时文件,这会消耗一点时间,因此会比one-folder bundle慢一点点
在这里插入图片描述

创建好临时文件夹后,接下来的流程跟one-folder一样,打包的代码执行结束后,bootloader会删除临时文件夹
在这里插入图片描述

后面spec文件的内容,这里重复提一下,因为删除临时文件夹时不会把对那些文件的修改写回one-file执行文件里,因此对一起打包进one-file执行文件的那些文件的修改会在程序执行结束时都丢失!!!而one-folder执行文件不会有这个问题

在这里插入图片描述

因为每次执行时,临时文件夹名字都有一个不同的随机数字,因此可以同时运行多个app,不会互相干扰
如果程序进程中途被杀死,临时文件夹不会被删除,因此多次以后可能会浪费很多空间
如下,已经有几个了。。。
在这里插入图片描述

在这里插入图片描述

可以使用参数–runtime-tmpdir来指定临时文件夹的位置,这个参数会存储进可执行文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值