博客
关于我
Python打包工具--Pyinstaller详细介绍
阅读量:178 次
发布时间:2019-02-28

本文共 2157 字,大约阅读时间需要 7 分钟。

那年初相识

PyInstaller是我用pip下载的第一个模块。初次接触Python时,看到有人能用Python编写工具直接运行在Windows机器下,总觉得这能让开发变得更简单。

这种脱离编译环境和虚拟机而直接运行的能力,是我一直期待的。有人问为何不学C++?那时我只是觉得学习C++编译环境太复杂了。而Python的简洁语法和丰富库让我着迷不已。

看到Python之父那茂密的头发后,我更加坚定了学习Python的决心。

安装pip后,我急着学习如何打包代码,转化为exe文件。在公司内外网隔离的情况下,经过千番折扣终于找到公司镜像源,完成了pyinstaller的下载和配置,最终在日落西山前将简单的print代码打包成exe,向同事炫耀。

现在回想起来,太幼稚了...

一发不可收拾

由于PyInstaller直接跳过了编译环境,我的Python路线从easygui和tkinter开始了。这让我觉得自己装13必备,但在没有扎实基础的情况下学这些可真的是苦得很。

后来慢慢玩腻了,才重新从基础开始学习Python。

Yesterday Once More

最近项目需要在Linux环境下自动化打包、安装和运行多个基础环境。最初打算用shell脚本,但由于涉及大量配置文件,最终选择了Python。可是客户方要求执行脚本在全新的网络隔离机器上运行,这让我又回到PyInstaller的怀抱。

网上搜了一圈,最终还是选择了PyInstaller。它支持多种平台,包括Linux,这正是我们项目需要的。

PyInstaller的优势在于它支持所有Python2.3及以后的版本,能打包更小的文件,还能利用操作系统的动态库支持,确保兼容性。

突然想起萧亚轩的"最熟悉的陌生人"。我们总是觉得自己熟悉了某件事,却忽略了其中的很多细节。

重新学习PyInstaller

安装:使用pip install pyinstaller即可安装。注意,在Windows环境下,需要依赖pywin32模块,且从3.3版本开始,pyinstaller会自动安装此依赖。Linux环境下则需要安装python-devel,建议在首次编译时添加依赖。

配置:在Windows环境下,安装完成后,PyInstaller会在{PythonPath}/Scripts下。注意将Scripts目录添加到环境变量中。Linux环境下,需要创建符号链接:ln -s {PythonPath}/bin/pyinstaller /usr/bin。

核心参数

-F, –onefile:打包为一个单独文件,适用于所有代码在一个.py文件中的情况。

-D, –onedir:打包为多个文件,生成dist目录下的多个依赖文件,适合框架式开发,方便维护。

-K, –tk:在打包时包含TCL/TK库。

-a, –ascii:不包含编码。默认情况下,支持Unicode的Python版本会包含所有编码。

-d, –debug:生成调试版可执行文件。

-w, –windowed, –noconsole:在Windows环境下使用窗口子系统执行,不会打开命令行窗口。

-c, –nowindowed, –console:使用控制台子系统执行,默认情况下只对Windows有效。

-s, –strip:对可执行文件和共享库进行剥离操作。注意Cygwin的strip会导致普通的win32 DLL无法使用。

-X, –upx:如果已安装UPX,会压缩可执行文件(包括Windows的DLL文件)。不建议使用。

-o DIR, –out=DIR:指定生成spec文件的输出目录,默认在PyInstaller根目录下生成。

-p DIR, –path=DIR:设置导入路径,与PYTHONPATH效果相同。可以使用分割符(Windows:分号,Linux:冒号)分隔多个目录。

–icon=FILE.ICO:为可执行文件添加.ico图标(仅适用于Windows)。

–icon=FILE.EXE,N:将.exe文件的第N个图标添加为可执行文件的资源(仅适用于Windows)。

–version=FILE:将指定文件作为可执行文件的版本资源(仅适用于Windows)。

–name=NAME:指定生成的spec文件名。如果省略,第一个脚本的主文件名将作为spec文件名。

不推荐使用的参数

–X, –upx:安装UPX后使用时会压缩文件,但有时会导致异常退出,不建议使用。

打包示例

想知道如何用PyInstaller打包一个简单的Flask程序?以下是一个简单的步骤指南:

执行命令:pyinstaller -F your_flask_program.py

PyInstaller会生成build目录和your_flask_program.spec的spec文件。最终会在dist/your_flask_program.exe生成打包后的可执行文件。

注意:Flask依赖的html模板文件需要单独拷贝到dist目录中,否则可能会出现server error。

希望这篇文章能帮到你。如果觉得有帮助,欢迎关注我的公众号【清风Python】,获取更多Python学习资源。

转载地址:http://hgqc.baihongyu.com/

你可能感兴趣的文章
MySQL 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>
Mysql 纵表转换为横表
查看>>
mysql 编译安装 window篇
查看>>
mysql 网络目录_联机目录数据库
查看>>
MySQL 聚簇索引&&二级索引&&辅助索引
查看>>
Mysql 脏页 脏读 脏数据
查看>>
mysql 自增id和UUID做主键性能分析,及最优方案
查看>>
Mysql 自定义函数
查看>>
mysql 行转列 列转行
查看>>
Mysql 表分区
查看>>
mysql 表的操作
查看>>
mysql 视图,视图更新删除
查看>>
MySQL 触发器
查看>>