PyInstaller打包Python项目完整指南:单文件、多文件及体积优化

叶初
叶初
发布时间:2026-10-14| 5人浏览过
原创

本文详细介绍如何使用PyInstaller将Python项目打包为可执行文件。涵盖单文件打包、添加图标、多文件项目打包及静态资源路径处理等核心操作。针对打包后文件体积过大的问题,提供通过虚拟环境精简依赖的优化方案,帮助开发者高效完成Python应用的发布与部署。

一、单个文件打包

1.1 简单打包

假设当前目录下存在一个名为main.py的Python脚本,其内容如下所示。


import os
print("hello world")
os.system("pause")

运行该脚本后的输出结果如图所示。

接下来,使用以下命令将该脚本打包为单一的可执行文件pyinstaller -F main.py。

执行命令后,会在同级目录下生成一个名为dist的文件夹。该文件夹内包含生成的可执行文件,双击即可运行。

1.2 带图标打包

为了提升可执行文件的美观度,可以为生成的exe文件指定自定义图标。此时,可使用如下命令pyinstaller -F main.py-i filename.ico进行打包。

打包完成后,需将准备好的.ico图标文件复制到dist目录中,与生成的可执行文件置于同一位置即可生效。

二、项目多文件打包

上述示例仅针对简单的单文件Demo。在实际开发中,大多数项目包含多个Python文件,此时打包过程相对复杂,主要依赖以下命令进行pyinstaller -D main.py -p other1.py -p other2.py [-w] -i flie.ico处理。

如果直接按照上述方式打包,生成的文件体积可能会非常大。这是因为Python解释器及未使用的库文件也被一并打包进去了。

命令 作用
-F 打包成一个exe文件,就是不管原文件时多少个最终生成只是一个exe可执行文件,这种方式再大型项目中不适用,打开程序太慢
-D 以依赖的方式打包,类似于平时安装工具的方式,会有一对的库文件,一般项目建议这种方式
-p 主文件以外其他用到的python文件
-w 运行程序的时候不显示终端。如果不加的话就是做了UI界面,运行的时候也会跳出终端,这个视情况决定
-i 加载图标文件

以上列举了常用命令的作用,其他更多命令参数可查阅PyInstaller官方文档获取详细信息。

具体例程如下所示:

假设有一个包含4个Python文件的项目,运行主程序的效果如图所示。

使用如下命令进行打包pyinstaller -D MysherTools.py -p BLC.py -p consistencyCheck.py -p ui.py -w -i .\inco\tool.ico。

打包完成后生成的文件结构如图所示。

双击运行生成的exe可执行文件,效果如图所示。

若出现类似上述的提示错误,通常是因为程序依赖的静态文件未放置在正确的路径下。例如,打包时指定的ico文件位于icon目录下,因此需要将整个icon目录拷贝至可执行文件所在的运行路径下。将静态资源放置到指定位置后,程序即可正常运行,效果如图所示。

注意:务必确保程序运行所需的静态文件路径配置正确,否则会导致运行时错误。

三、打包后文件太大

为解决此问题,建议创建一个独立的虚拟环境,仅安装项目实际依赖的库文件。随后在该虚拟环境中进行打包,这样生成的可执行文件体积会显著减小。

至此,关于使用PyInstaller打包Python项目的教程介绍完毕。如需了解更多相关PyInstaller打包Python的内容,请搜索本站历史文章或继续浏览后续相关文章,希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。