利用PyInstaller打包Python脚本学习记录

简介

PyInstaller可以用来打包Python应用程序,打包完的程序就可以在没有安装Python解释器的机器上运行了。PyInstaller支持Python 2.7和python 3.3+。可以在Windows、Mac OS X和Linux上使用,但是并不是跨平台的。

PyInstaller打包时,会分析你的Python程序,找到所有的依赖项。然后将依赖文件和Python解释器放到一个文件夹下或者一个可执行文件中。

语法

pyinstaller [options] <script file name>

打包成一个文件夹

当使用PyInstaller打包的时候,默认生成一个文件夹,文件夹中包含所有依赖项,以及可执行文件。打包成文件夹的好处就是debug的时候可以清楚的看到依赖项有没有包含。另一个好处是更新的时候,只需要更新可执行文件就可以了。当然缺点也很明显,不方便,不易管理。

工作原理:这种情况下,PyInstaller的引导程序是一个二进制可执行程序。当用户启动你的程序的时候,PyInstaller的引导程序开始运行,首先创建一个临时的Python环境,然后通过Python解释器导入程序的依赖,当然他们都在同一个文件夹下。

打包成一个文件

打包成一个文件相对于文件夹更容易管理。坏处运行相对比较慢。这个文件中包含了压缩的依赖文件拷贝(.so文件)。

打包时需要使用选项 -F 或 --onefile,例如:

pyinstaller -F script.py

或者

pyinstaller --onefile script.py

工作原理:这种情况下,PyInstaller的引导程序会新建一个临时文件夹。然后解压程序的第三方依赖文件到临时文件夹中。这也是为什么一个可执行文件比文件夹中执行的时间要长的原因。

其他常用选项

  • 选项 -w 或 --noconsole 表示去掉控制台窗口,这在GUI界面时非常有用。
  • 选项 -i 或者 --icon 表示添加可执行文件的图标
  • 选项 -p 表示你自己自定义需要加载的类路径
  • 选项 --clean 表示清理PyInstaller缓存并在构建之前删除临时文件

spec 文件

简介

在进行打包操作时,PyInstaller首先建一个sepc(specification)文件:script name.spec。这个文件的存放地址可以使用参数–specpath= 来定义,默认放在当前文件夹下。spec文件的作用是告诉PyInstaller如何处理你的py文件,它会将你的py文件名字和输入的大部分参数进行编码。PyInstaller通过执行spec文件中的内容来生成app,有点像makefile。正常使用中我们是不需要管spec文件的,但是下面几种情况需要修改spec文件:

  • 需要打包资源文件
  • 需要include一些PyInstaller不知道的run-time库
  • 为可执行文件添加run-time 选项
  • 多程序打包

生成spec文件的语法:

pyi-makespec [options] <script file name> [other scripts ...]

修改完spec文件,就可以通过下面命令来生成app文件了:

pyinstaller [options] <script name.spec>

当通过spec文件来生成app文件的时候只有下面几个参数是有用的:

  • –upx-dir:指定upx工具的目录
  • –distpath:指定生成的目录
  • –noconfirm:替换输出目录而不要求确认
  • –ascii:不包括unicode编码支持

而像选项 --onefile 等已经不支持了,故需要在生成spec文件时将那些命令先输入。

spec 文件解析

参考链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值