商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > python文件打包方式(使用pyinstaller)

python文件打包方式(使用pyinstaller)

  发布于2026-06-30 阅读(0)

扫一扫,手机访问

说起Python打包,PyInstaller绝对是绕不开的一个工具。它能把你的Python代码打包成一个独立的可执行文件,哪怕对方电脑上压根没装Python解释器,也能直接运行你的程序。对于给非技术用户交付软件、或者做个小工具分享出去来说,简直不要太方便。

python文件打包方式(使用pyinstaller)

安装

装起来很简单,一行pip命令就能搞定:

pip install pyinstaller

打包之前,先确保项目里需要的依赖都装齐了。通常你可以用pip install -r requirements.txt一次性搞定。

打包

把依赖装好之后,就可以正式开始打包了。这里有两种主流方式,一种是用命令行直接怼,另一种是写成脚本反复用,看个人习惯。

方式一:使用打包命令

简单粗暴版:

pyinstaller main.py

这条命令干完,会在当前目录下生成一个dist文件夹,里面就是打包好的东西。不过可执行文件长得有点原始,图标、窗口模式什么的都没做个性化。

进阶定制版:

实际项目中,我们通常会加上一堆参数。下面是几个常见操作系统的例子,注意路径分隔符的差异:

Windows - PowerShell:

pyinstaller -n SnakeGame `
        -i img/icon.png `
		--clean --onedir `
    	--windowed `
		--add-data="img;img" `
		--exclude-module="numpy" `
		main.py

Windows - cmd:

# 打包到一个目录
pyinstaller -n PID_Tool -i img/logo.ico ^
		--clean --onedir	 ^
		--add-data="res;res" ^
		--add-data="img;img" ^
		--exclude-module="matplotlib" ^
		app.py

Linux / Mac:

# 打包成单文件
pyinstaller -n PID_Tool -i img/logo.ico 
		--clean --onefile	 
		--add-data="res:res" 
		--add-data="img:img" 
		--exclude-module="matplotlib" 
		main.py

参数的含义很好理解:-n 指定程序名字,-i 指定图标,--onedir 打包成文件夹(--onefile 则是单文件),--windowed 表示有窗口界面(不加就是控制台程序),--add-data 用来带上资源文件,--exclude-module 可以把不需要的第三方模块踢掉,减小软件包体积。

方式二:编写打包脚本

如果每次都要敲一长串命令,很容易手滑出错。更聪明的做法是把这些参数写到一个Python脚本里,下次直接运行脚本就行。

假设你的程序叫PID_GUI_Tool,入口文件是main.py。在main.py同目录下新建一个package.py,写入以下内容:

import PyInstaller.__main__

# 这里的是不需要打包进去的三方模块,可以减少软件包的体积
excluded_modules = [
    "scipy",
    "matplotlib",
]

append_string = []
for mod in excluded_modules:
    append_string += [f'--exclude-module={mod}']

PyInstaller.__main__.run([
    '-y',  # 如果dist文件夹内已经存在生成文件,则不询问用户,直接覆盖
    # '-p', 'src', # 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号;,Linux 使用冒号:)来分隔多个路径
    'main.py',  # 主程序入口
    '--onedir',  # -D 文件夹
    # '--onefile', # -F 单文件
    # '--nowindowed', # -c 无窗口
    '--windowed',  # -w 有窗口
    '-n', 'PID_GUI_Tool',
    '-i', 'img/logo.ico',
    '--add-data=res;res',  # 用法:pyinstaller main.py –add-data=src;dest。windows以;分割,mac,linux以:分割
    '--add-data=img;img',  # 用法:pyinstaller main.py –add-data=src;dest。windows以;分割,mac,linux以:分割
    *append_string
])

然后直接执行python package.py(或者在你的编辑器里运行它),等跑完,打包好的可执行文件就会出现在dist目录下。

问题及解决

打包过程中难免碰到一些坑。比如最常见的这个报错:

from PIL import Image

ModuleNotFoundError: No module named 'PIL'

不用慌,这是因为代码里用到了PIL(也就是 Pillow),但 PyInstaller 有时候不会自动帮你带上。手动安装一下就好:

pip install pillow

总结

PyInstaller 的打包流程并不复杂,无非是装依赖、调参数、跑命令。关键在于把常用的参数记熟,或者写成脚本一劳永逸。另外注意跨平台时路径分隔符的区别,以及资源文件的--add-data写法。遇到缺失模块的错误,先看看是不是漏装了依赖,或者用--hidden-import手动指定一下。掌握了这些,给Python项目打包就基本没啥障碍了。

本文转载于:https://www.jb51.net/python/365045h1h.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

产品推荐

热门关注