PyInstaller通过打包Python代码和依赖,用户只需解压文件即可运行应用,类似静态语言编译,与Java分发带JRE的jar包相似。然而,输出与操作系统和Python版本绑定,不包含操作系统自带库。且无法实现完全的代码隐藏,输出应用包含已编译的pyc文件,反向编译仍有可能。使用PyInstaller打包应用的步骤:编写应用代码,使用...
Python教程:使用PyInstaller打包Python应用
Python应用共享时,用户需先安装Python及依赖,操作繁琐且技术门槛较高。PyInstaller作为第三方工具,简化了这一过程。
PyInstaller通过打包Python代码和依赖,用户只需解压文件即可运行应用,类似静态语言编译,与Java分发带JRE的jar包相似。然而,输出与操作系统和Python版本绑定,不包含操作系统自带库。且无法实现完全的代码隐藏,输出应用包含已编译的pyc文件,反向编译仍有可能。
使用PyInstaller打包应用的步骤:编写应用代码,使用命令行工具PyInstaller打包应用代码和依赖。打包后可作为文件夹或文件分发给其他人,用户无需安装Python或模块即可运行。
注意,PyInstaller打包的输出与操作系统和Python版本相关联,需在特定操作系统上使用特定版本的Python打包应用。应用不包含操作系统自带库,依赖系统提供。PyInstaller不支持隐藏源代码,使用Cython编译Python代码为C代码,再编译为机器码,可实现更高程度的代码隐藏。
下面是一些使用PyInstaller打包应用的示例:
### 示例1: 最简单的使用方法
假设应用代码包含一个简单的Tkinter应用,没有任何第三方依赖。
建立并进入虚拟环境,安装PyInstaller。执行打包命令。
查看dist目录下生成的文件,包含可执行文件和运行时依赖文件夹。将其压缩发送给用户,用户解压即可直接运行。
若希望生成一个单独的可执行文件,可增加一个选项将运行时依赖打包至文件。
运行此可执行文件时,会显示一个额外的Console窗口。对于GUI应用,可采用两种方法移除此窗口。
### 示例2: 多文件应用
将单文件应用拆分为多个文件,分别命名为multi_1.py和multi_2.py。打包应用时,只需指定启动文件即可。
### 示例3: 有外部依赖的应用
编写一个包含外部依赖的应用,如one_file_dep.py。在打包前,通过requirements.txt文件管理依赖,执行打包命令时,一并安装依赖。
在打包过程中,使用--log-level=DEBUG选项查看构建过程中的依赖图。将生成的.dot文件转换为图片,以便更直观地查看依赖关系。
总结了使用PyInstaller打包Python应用的流程、注意事项及示例,希望对开发者在共享应用时提供帮助。2024-09-26