一文学会用PyInstaller把Python 程序打包成一个独立的可执行文件
off999 2025-06-12 15:11 111 浏览 0 评论
PyInstaller 是一个 Python 库,它可以将 Python 源代码和依赖的模块打包成一个可执行文件或者一个压缩包,这样就可以在没有安装 Python 解释器或任何模块的环境中运行您的程序。PyInstaller 支持 Python 3.8 及更高版本,可以正确地打包许多主流的 Python 包,如 numpy, matplotlib, PyQt, wxPython 等。
要使用 PyInstaller,需要先安装它,可以通过 pip 命令来安装它:
pip install -U pyinstaller
然后,可以在命令行中使用以下命令来打包 Python 程序:
pyinstaller your_program.py
打包应用程序应该现在可以在 dist 文件夹中找到。还可以使用一些选项来定制您的打包过程,例如指定图标,隐藏控制台窗口,添加数据文件等。以下是一些常用的选项的说明:
- -F:打包所有的依赖包在一个可执行文件中,包括您自己的模块、内置模块以及第三方模块。
- -D:打包所有的依赖包在一个文件夹中,运行程序时,需要进入该文件夹,点击运行相应的可执行程序。
- -i:指定打包程序的图标,只适用于 Windows 平台。
- -n:指定打包后生成文件的名称。
- -w:禁止命令行弹出,适用于图形界面程序。
PyInstaller 在打包时,会生成一个 spec 文件,这是一个 Python 文件,里面包含了打包的配置信息,可以通过编辑这个文件来进一步控制打包的细节,例如添加外部数据文件,指定隐藏的导入模块,设置 C/C++ 扩展等2。以下是一个 spec 文件的示例:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['your_program.py'],
pathex=['your_path'],
binaries=[],
datas=[('your_data_file', 'data')],
hiddenimports=['numpy', 'pandas'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='your_program',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
icon='your_icon.ico')
可以根据您的项目的实际情况来修改 spec 文件中的参数,然后使用以下命令来打包您的程序:
pyinstaller your_program.spec
PyInstaller 的工作原理是,当双击编译好的可执行文件后,它会创建一个临时目录,把所有需要用的包都解压到那里,然后执行。执行完毕后,临时文件夹就消失了。因此,您需要注意以下几点:
- 如果项目中需要读取或写入某些文件,您需要使用相对路径,而不是绝对路径,否则在打包后可能会出现找不到文件的错误。
- 如果项目中使用了一些 PyInstaller 无法自动检测到的模块,您需要在 spec 文件中的 hiddenimports 参数中指定它们,否则在打包后可能会出现导入错误。
- 如果项目中使用了一些 PyInstaller 无法正确处理的模块,例如 PyQt5, PySide2, PyTorch 等,需要在 spec 文件中的 hookspath 参数中指定相应的钩子文件,或者使用 PyInstaller 提供的一些特殊选项,例如 --windowed,--exclude-module 等2。
PyInstaller 的优点是,它可以将 Python 程序打包成一个独立的可执行文件,方便您在没有 Python 环境的情况下运行和分发您的程序。它也可以保护您的源代码,防止被轻易地反编译和修改。PyInstaller 的缺点是,它可能会导致打包后的文件过大,因为它会将 Python 解释器和所有的依赖包都打包进去。它也可能会遇到一些兼容性或稳定性的问题,因为它不是一个完美的打包工具,有时候会出现一些意想不到的错误或警告。
相关推荐
-
- mp3转mp4格式转换器(mp3转换成mp4格式的手机软件)
-
下载格式工厂,打开格式工厂,点音频,选择MP3,点右上角添加文件,选择要转换的MP4文件,点确定就可以了。...
-
2026-02-03 11:51 off999
- lol盒子官方下载(英雄联盟盒子官方)
-
Wegame英雄联盟箱也叫LOL盒子,但现在LOL盒子已经被删除了,但是你可以放现在的盒子Wegame它被理解为英雄联盟指定插件,因为它还具有查看召唤师记录和记录各种数据、水晶复活、野生怪...
- 微信2025最新版本官方免费下载
-
是的,苹果6可以继续使用微信。虽然苹果6已经不再是最新的iPhone型号,但它仍然能够支持微信的运行。只要你的苹果6上安装了最新版本的iOS系统,你就可以在上面下载和使用微信应用程序,与朋友们聊天、分...
- 在线音乐(在线音乐合集)
-
在线听音乐就是利智能手机或者电脑,其中的应用上的资源,不下载随搜随播放收听,这样的听音乐方便快捷,但是音质一般,因为手机和电脑都是软解,若是想要得到无损音质,则把曲目下载后导出手机或者电脑外,使用储卡...
- 滴滴注册司机车辆要求(滴滴注册司机车辆要求营运证)
-
以北海市为例,车辆要求如下:根据《北海市网约车管理实施细则》第十三条拟从事网约车经营的车辆,应当符合以下条件(一)七座及以下乘用车;(二)网约车经营车辆尾气排放必须达到国家规定的环保标准,发动机排量...
- 植物大战僵尸单机下载(单机植物大战僵尸免费版手机版)
-
您好,要在手机上下载并玩植物大战僵尸无尽版(Plantsvs.ZombiesEndlessVersion),可以按照以下步骤操作:1.打开手机的应用商店(如AppStore或Google...
-
- 赚钱app第一名(赚钱app第一名提现微信)
-
比较大的公司产品就有:抖音极速版和今日头条极速版,欢迎扫码注册,注册后可以做任务赚金币,金币可以还钱,还可以提现;其他还有一些各种app,什么走路赚钱,读书赚钱等等的,不过不建议安装。头条、西瓜、抖音、快手等等都很靠谱啊,赚钱只能各凭本事了...
-
2026-02-03 09:51 off999
- 新东方英语线上课程报名(适合小学生免费学英语的软件)
-
新东方网上报名及支付操作流程一、登陆http://sz.xdf.cn/,进入新东方官网首页,搜索课程名称或者班号,选择适合您的课程二、进入搜课课程页面,点击【立即报名】三、去结算已选在购物车的课程四、...
- 沫子漫画画免费读漫画在线观看
-
漫画结局就是夏沫和大少爷结婚,洛熙就在教堂听了什么后释然了,夏末还怀上了欧辰的宝宝,并且获得了最佳女主角的奖项。据文中洛熙的说法,是在第一次参加超级明星的那天晚上,在漫画第四话第28页,不过漫画上画的...
- 主题壁纸大全下载(好看的主题壁纸图片)
-
主题和壁纸有很大的区别,壁纸的话,你可以根据自己的喜好来设置你想要得到的壁纸,可以从你的相册里面挑选壁纸作为你的手机屏幕壁纸纸,但是主题的话,主题,他是属于一个系列的,当你换了手机主题之后,你的操作界...
- 网络电视下载什么软件看直播电视
-
1,饭团影视tv版 饭团影视是一款超好看的影视资源播放器软件轻松享受追剧的快感,无卡顿流畅播放,超强大的播放功能。 2,红影TV版 红影TV是一款电视点播软件,无需授权码,无需注册登录,软件完全...
- 如何快速学会cad制图(怎样能快速学会cad画图)
-
CAD可以自学啊,很简单,就是你报个班去学也就是那些简单点的东西,自学都可以搞定的,因为那些辅导班很少有教你实际的东西,大都是一些简单命令的操作。。。CAD也分好几种,机械,电气,建筑等等,你的先选好...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
win7系统还原步骤图解(win7还原电脑系统的步骤)
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
16949认证费用是多少(16949审核员太难考了)
-
linux软件(linux软件图标)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
