Pyinstaller打包方法

目录

简介

步骤

一、生成.spec文件

二、在.spec文件里手动添加其余文件信息

一些可能的疑惑和注意事项


简介

我的使用场景是打包PyQt做好的上位机界面,我的文件结构如下:

其中,fun文件夹里面全是一些.py文件,封装一些类和方法;images文件夹里面是我的程序用到的图片;personnal_data文件夹里面包括两个子文件夹,两个子文件夹里面存入不同类型的数据,如.csv、.npy等。

注意本文提到的文件夹是文件夹,文件是文件,需着重区分。

步骤

打包具体步骤如下:

一、生成.spec文件

在pycharm终端,cd到pro1文件夹下,运行

pyi-makespec -w main.py

其中,main.py就是加载主程序的那个py文件,需要替换成你的。

这样就生成了一个main.spec文件,大概长这样

二、在.spec文件里手动添加其余文件信息

仔细看.spec文件,主要是修改这两个位置

规则:把散落在外的.py文件添加到'main.py下面';把文件夹及其余散落在外的文件添加到binaries后面,注意格式为('文件夹名','文件夹名')或('文件名','.')。写 '文件夹名' 还是写 '.' 后面会有解释。

添加好后,接着在终端(还是cd pro1以后那里)运行

pyinstaller main.spec

运行之后会生成build文件夹和dist文件夹。build是exe编译过程中产生的文件夹,没用;我们最终的文件在dist文件夹下。如图

运行main.exe即可。

一些可能的疑惑和注意事项

1、images.qrc和mainwindow.ui是pyqt5用于将图片和界面编译成.py文件,只是为了方便设计,编译后真正用到的是images_rc.py和mainwindow.py,所以这两个不需要放在binaries里面。

2、手动添加信息后再打包,其实就相当于在_internal文件夹下导入了上述binaries添加的那些东西(还有一个Config.ini文件,截图放不下了)

3、关于('文件夹名','文件夹名')和('文件名','.')

如果后面用了'文件夹名',则会导出完整的文件夹,如上图所示。如果后面用了'.',则会导出文件夹里面的内容,不包括文件夹本身。如果('personal_data','.'),personal_data下有left和right两个子文件夹,则在_internal里只会有left和right及里面的文件,而没有personal_data;如果('Config.ini','Config.ini'),则在_internal里会生成一个Config.ini文件夹,里面包括Config.ini文件。

4、路径问题

这一点很重要,如果说你之前的路径是这样的

那么务必要通过os模块更改为绝对路径(可自己打印路径调试),如下图

总之务必确保你自己导入的模块路径打包后能够被找到。

可以在命令提示窗口(小黑窗),把main.exe拖入,回车运行,可以类似编译器打印出错误。

<think>好的,我现在需要帮助用户找到关于PyInstaller打包方法和使用指南。首先,我得回忆一下PyInstaller的基本用法和常见步骤。PyInstaller是一个将Python程序打包成独立可执行文件的工具,支持Windows、Linux和macOS。用户可能需要从安装开始,到基本命令,再到常见问题的解决。 用户要求详细步骤,所以需要分步骤说明。首先安装PyInstaller,这通常通过pip安装。然后,基本打包命令是pyinstaller your_script.py,但可能需要解释不同选项,比如--onefile或--windowed。另外,用户可能想知道如何处理依赖项或数据文件,比如图片或配置文件,这时候需要提到--add-data选项。 还有,用户可能遇到打包后的文件过大,或者反病毒软件误报的问题,这些常见问题需要提及。高级用法比如加密打包、自定义spec文件可能也是用户想了解的。同时,生成相关问题时,要考虑用户可能的后续疑问,比如多文件打包、路径问题、跨平台兼容性等。 需要确保按照用户的要求,所有数学表达式用$...$,但在这个问题中可能涉及较少,不过如果有代码或路径中的变量,可能需要用代码块。另外,回答要结构清晰,分步骤,并引用相关资源,比如PyInstaller官方文档作为引用来源。 最后,生成相关问题时要考虑用户进一步的需求,比如如何减少打包体积、处理依赖、排除不必要的文件等。还要注意使用中文,避免使用Markdown格式,但用户示例中用了代码块,所以可能需要保留。需要检查是否符合所有系统级指令,比如引用标识和正确的中文回答。</think>### PyInstaller 打包教程与使用指南 #### 一、环境准备 1. 安装Python环境(建议Python 3.6+)[^1] 2. 使用pip安装PyInstaller: ```bash pip install pyinstaller ``` #### 二、基础打包步骤 1. **单文件打包** 在命令行中执行: ```bash pyinstaller your_script.py ``` - 生成文件位于`dist/your_script`目录 - 包含可执行文件及依赖库 2. **单文件模式(生成单个exe)** 添加`--onefile`参数: ```bash pyinstaller --onefile your_script.py ``` 3. **隐藏控制台窗口(GUI程序专用)** 使用`--windowed`参数: ```bash pyinstaller --windowed --onefile your_script.py ``` #### 三、进阶配置 1. **添加数据文件** 使用`--add-data`指定额外资源(如图片、配置文件): ```bash pyinstaller --add-data "source_path;dest_path" your_script.py ``` - Windows使用分号`;`分隔路径,Linux/macOS使用冒号`:` 2. **自定义图标** 通过`--icon`指定程序图标: ```bash pyinstaller --icon=app.ico your_script.py ``` 3. **排除模块** 减少体积时使用`--exclude-module`: ```bash pyinstaller --exclude-module matplotlib your_script.py ``` #### 四、调试与优化 1. **查看打包过程** 添加`--debug all`参数显示详细日志: ```bash pyinstaller --debug all your_script.py ``` 2. **反病毒误报处理** - 使用代码签名证书对exe签名 - 在Virustotal提交误报文件申诉 #### 五、SPEC文件定制 1. 首次打包后生成`your_script.spec` 2. 修改spec文件后重新打包: ```bash pyinstaller your_script.spec ``` - 可自定义依赖分析、加密Python字节码等 --- ### 常见问题解决 1. **打包后程序闪退** - 在命令行中直接运行exe查看报错 - 检查是否有未打包的动态链接库(DLL) 2. **路径问题** 使用以下代码兼容打包后路径: ```python import sys if getattr(sys, 'frozen', False): base_path = sys._MEIPASS else: base_path = os.path.dirname(__file__) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

learninger_lt7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值