python3 pyinstaller打包生成exe程序 图标不改变

python3 pyinstaller打包生成exe程序 图标不改变

命令代码

-i 图标路径
–icon=图标路径
-F 打包成一个exe文件
-w 使用窗口,无控制台
-c 使用控制台,无窗口
-D 创建一个目录,里面包含exe以及其他一些依赖性文件
pyinstaller -h 来查看参数

pyinstaller -F -i E:\xinge\img\logo.ico login.py -w

两种图片生成方式
pyinstaller -F -w -i E:\xinge\img\logo.ico login.py

pyinstaller -F -w --icon=“E:\xinge\img\logo.ico” login.py

生成结果1

在这里插入图片描述

生成结果2

logo.exe 为原python图标
在这里插入图片描述

原因

因为windows资源管理器对图标有缓存问题!!! 【缓存问题引起】

解决方法

1、将打包的exe文件复制到另外的一个地方,有时重启explorer.exe进程也可以修复。
2、更改文件查看方式即 调整为大图标、中图标、小图标等,explorer.

<think>好的,用户想将使用Ursina库的Python项目通过PyInstaller打包成可执行文件。首先,我需要回忆之前的相关引用内容,特别是引用[2]、[3]、[4],这些可能提供有用的信息。 根据引用[4],用户提到需要添加特定的参数,比如--add-data和--collect-all来处理依赖项。比如,他们用了--add-data "panda3d/;panda3d"以及--collect-all ursina和--collect-all pygame。这可能是因为Ursina依赖Panda3D和PyGame,所以需要将这些库的数据文件一起打包进去。 另外,引用[3]提到手动添加hook文件的情况,比如处理pyppeteer_stealth这样的模块。虽然Ursina可能需要这个特定模块,但如果有其他类似依赖,可能需要自定义hook。过,用户的问题主要围绕Ursina,所以可能需要这个步骤,但需要确认是否有其他隐藏依赖。 引用[2]指出Panda3D的路径问题,可能需要确保PyInstaller能找到这些路径。过根据引用[4]的示例,使用--add-data可能已经解决了这个问题。 用户可能遇到的常见问题包括:打包后的exe到资源文件、依赖库没有被正确包含、版本兼容性问题。比如引用[1]提到PyInstaller版本与Python版本的冲突,所以需要确认用户使用PyInstaller版本是否兼容他们的Python版本。例如,如果用户用Python 3.8+,可能需要PyInstaller 4.1以上,但根据引用[1]的例子,用户可能需要降级到3.4版本,但这里可能需要具体情况具体分析。 接下来,我需要整理打包步骤:安装正确版本的PyInstaller使用特定的命令参数包含Ursina、Panda3D等依赖,处理资源文件,可能的hook文件添加,以及排除常见问题如路径错误或版本兼容。 还需要考虑用户可能的错误场景,比如打包exe运行时崩溃,如何调试,比如使用控制台查看错误信息,或者添加钩子确保所有模块被正确收集。 最后,生成相关问题,帮助用户深入解决可能遇到的后续问题,比如性能优化、添加图标、处理特定模块的hook等。</think>### 分步解决方案:将Ursina项目打包EXE文件 #### 1. **环境准备** - 确认Python版本与PyInstaller兼容 Ursina引擎依赖Python 3.7+,推荐使用Python 3.7-3.9以避免高版本兼容性问题[^1]。 PyInstaller版本建议选择4.5以下(如3.6)或最新稳定版(需验证兼容性)。 #### 2. **安装依赖** ```bash pip install ursina pyinstaller ``` 若存在第三方库依赖(如`panda3d`、`pygame`),需一并安装。 #### 3. **编写打包命令** 核心命令需包含以下参数: ```bash pyinstaller --add-data "panda3d;ursina/libs/panda3d" --collect-all ursina --collect-all pygame -w -i 图标路径 主程序.py ``` - `--add-data "panda3d;ursina/libs/panda3d"` 将Panda3D引擎资源文件从本地路径复制到打包目录[^4]。 - `--collect-all ursina` 强制包含Ursina引擎全部模块和资源文件。 - `-w` 隐藏控制台窗口(适用于图形化程序)。 - `-i 图标路径` 指定EXE文件图标。 #### 4. **处理特殊依赖** - **手动添加Hook文件** 若遇到`ModuleNotFoundError`,需在`PyInstaller/hooks`目录下创建对应hook文件。 例如包含`pyppeteer_stealth`模块时,需添加`hook-pyppeteer_stealth.py`[^3]: ```python from PyInstaller.utils.hooks import collect_data_files datas = collect_data_files("pyppeteer_stealth") ``` #### 5. **调试与验证** - 添加`--noconfirm`参数避免覆盖旧打包文件。 - 通过`-F`参数生成单一EXE文件(但可能增大体积): ```bash pyinstaller -F 主程序.py ... ``` - 若运行失败,移除`-w`参数查看控制台报错信息。 #### 6. **完整示例命令** ```bash pyinstaller --add-data "C:/Python39/Lib/site-packages/panda3d/*;ursina/libs/panda3d" --collect-all ursina --collect-all pygame -w -i logo.ico main.py ``` --- ### 常见问题解决 1. **资源文件路径错误** 程序中需使用绝对路径或`application.asset_folder`加载资源: ```python from ursina import application texture_path = application.asset_folder / &#39;textures&#39; ``` 2. **PyInstaller版本兼容性** 若报错`Module &#39;pywintypes&#39; not found`,降级到PyInstaller 3.6或升级Python3.7[^1]。 3. **OpenGL驱动缺失** 打包程序需依赖系统OpenGL驱动,建议在目标机器安装最新显卡驱动。 ---
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值