pyinstaller打包

本文介绍如何使用PyInstaller将Python程序打包为独立的可执行文件,适用于不同操作系统且无需Python环境。文章详细说明了安装配置过程及命令选项,包括生成单个exe文件、压缩等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间在写了几个小工具因为要让别人在没有Python环境的机器上运行所以直接打包好后在给别人运行,最开始用到了py2exe但是他打出来的包太大了(文章地址http://blog.youkuaiyun.com/you227/article/details/43052337),后来在网上看到说用pyinstaller可以打成单个运行文件并且打包后的文件还小很多,就尝试了一下

环境 version  2.7   win32

(python3中直接使用  pip3 install pyinstaller 命令安装即可   安装完成之后可以直接运行 pyinstaller 命令)

pyinstaller官方帮助文档http://pythonhosted.org/PyInstaller/

pyinstaller下载地址https://pypi.python.org/pypi/PyInstaller/2.0  下载pyinstaller-2.0.zip (md5)

pywin32下载地址http://sourceforge.net/projects/pywin32/files/pywin32/  下载对应的安装文件  pywin32-219.win32-py2.7.exe

upx下载地址http://sourceforge.net/projects/upx/

pyinstaller下载好后直接解压到当前目录就好了,他是免安装的

使用pyinstaller之前还要安装pywin32,下载好pywin32后直接运行安装中一直点下一步就好了,他会安装到Python安装目录中

把两个东西都安装好后就可以直接打包了,如果你要把打包文件压缩还要下载一下upx下载好upx后直接把其中的upx.exe复制到Python安装目录下就好了


下面就可以开始进入打包过程了:

打开cmd进入对应的目录运行 setup.py install  安装pyinstaller
生成单个exe窗口程序
pyinstaller.py -F -w -i bank.ico createBankCard.pyw
生成单个exe控制台程序
pyinstaller.py -F -c -i bank.ico createBankCard.pyw


-F, --onefilePy代码只有一个文件
-D, --onedirPy代码放在一个目录中(默认是这个)
-K, --tk包含TCL/TK
-d, --debug生成debug模式的exe文件
-w, --windowed, --noconsole窗体exe文件(Windows Only)
-c, --nowindowed, --console控制台exe文件(Windows Only)

-X, --upx使用upx压缩exe文件(压缩是不用打命令只要将upx.exe加到Python安装目录下就好了)

-o DIR, --out=DIR设置spec文件输出的目录,默认在PyInstaller同目录
-i <FILE.ICO>,--icon=<FILE.ICO>加入图标(Windows Only)

-v FILE, --version=FILE加入版本信息文件


使用  pyinstaller.py -F -w -i bank.ico createBankCard.pyw  命令打包

打包完成后会生成一个和项目名相同的文件夹(如果自己打包时另外取了名字就是自己取的那个名字的文件夹)打开文件夹后里面是这样的:


打包后的运行文件在dist文件夹中



这是使用打包单个文件并压缩后的效果,打包后文件可以直接在没有安装Python环境的机器上运行


注意:使用pyinstaller2.1打包的时候可能会产生在中文目录下面不能运行的问题

如果打包使用的python是64位的打包后的exe只能在64位的机器上运行,换成32位的python打包的就可以在32位和64位的机器上运行

### 使用 PyInstaller 打包 Python 程序并包含额外文件的方法 在使用 PyInstaller 打包 Python 程序时,如果需要包含额外的文件(如配置文件、图片或其他资源文件),可以使用 `--add-data` 参数[^2]。此参数允许将指定的文件或目录添加到生成的可执行文件中。 #### 配置文件的包含方法 当需要包含配置文件时,可以按照以下方式操作: ```bash pyinstaller --onefile --add-data "config.json;." main.py ``` 上述命令中的 `--add-data` 参数用于指定要包含的文件及其目标路径。参数格式为 `"source:destination"`,其中 `source` 是源文件路径,`destination` 是目标路径。例如,上述命令表示将 `config.json` 文件添加到打包后的程序根目录中。 #### 动态加载额外文件 在打包后的程序中,可以通过以下代码动态获取额外文件的路径: ```python import os import sys def resource_path(relative_path): """ 获取额外文件的实际路径 """ try: # PyInstaller 创建的临时文件夹 base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path) # 示例:加载配置文件 config_path = resource_path("config.json") print(f"Config file path: {config_path}") ``` 上述代码定义了一个 `resource_path` 函数,用于根据运行环境动态获取额外文件的路径。在开发环境中,它会返回当前工作目录下的文件路径;而在打包后的环境中,则会返回 PyInstaller 创建的临时文件夹中的路径[^1]。 #### 跨平台注意事项 在不同操作系统上,`--add-data` 参数的分隔符有所不同: - Windows: 使用分号 (`;`) 分隔源路径和目标路径。 - macOS 和 Linux: 使用冒号 (`:`) 分隔源路径和目标路径。 因此,在跨平台项目中,建议根据操作系统动态设置 `--add-data` 参数[^3]。 #### 示例:包含多个文件或目录 如果需要包含多个文件或整个目录,可以多次使用 `--add-data` 参数,或者一次性指定整个目录。例如: ```bash pyinstaller --onefile \ --add-data "config.json;." \ --add-data "images:images" \ main.py ``` 上述命令将 `config.json` 添加到根目录,并将 `images` 目录及其内容添加到 `images` 子目录中[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值