pyinstall通过配置.spec文件引用资源文件
pyinstall通过配置.spec文件引用资源文件
pyinstall可以自动将所有依赖的.py文件连接起来编译成一个可执行exe文件,但是如果在程序中 使用了外部资源,如图片,或者是其它的配置文件的时候。pyinstall直接编译生成的exe文件可能会找不到程序中引用的资源。
这时候我们就需要进入.spec文件中修改对应的配置项,引入我们需要的依赖,下面是.spec文件中的一部分内容,我们今天主要就是通过修改这里的datas来连接外部数据文件
a = Analysis( ['objdictedit.py'], # 主程序或脚本文件的列表。这里只有一个文件 'objdictedit.py'。 pathex=[], # 指定 Python 解释器的搜索路径。这里为空列表,表示使用默认的搜索路径。 binaries=[], # 包含在打包文件中的二进制文件列表。这里没有指定任何二进制文件。 datas=[], # 需要包含在打包中的数据文件列表。 hiddenimports=[], # 需要明确指定的隐藏导入模块列表。这里没有指定任何隐藏导入模块。 hookspath=[], # 钩子文件的路径列表,用于处理特定模块的导入问题。这里为空列表,表示没有额外的钩子路径。 hooksconfig={}, # 钩子配置选项的字典,用于定制导入钩子的行为。这里为空字典,表示没有特定的钩子配置。 runtime_hooks=[], # 运行时钩子列表,这些钩子在运行时修改导入行为。这里为空列表,表示没有运行时钩子。 excludes=[], # 被排除在打包之外的模块列表。这里为空列表,表示没有需要排除的模块。 noarchive=False, # 控制是否将 Python 源代码打包到归档中。这里设置为 False,表示允许将 Python 源代码打包到归档中。 optimize=0, # 优化级别,控制生成的字节码的优化等级。这里设置为 0,表示没有进行任何优化。 )
当我们需要使用根目录中的networkedit.ico
和config
文件夹中的DS-302.prf
,DS-401.prf
文件连接到我编译的exe中时,我们可以像下面这样配置
a = Analysis( ['objdictedit.py'], # 主程序或脚本文件的列表。这里只有一个文件 'objdictedit.py'。 pathex=[], # 指定 Python 解释器的搜索路径。这里为空列表,表示使用默认的搜索路径。 binaries=[], # 包含在打包文件中的二进制文件列表。这里没有指定任何二进制文件。 datas=[ ('networkedit.ico', '.'), ('config/DS-302.prf', 'config'), ('config/DS-401.prf', 'config'), ], hiddenimports=[], # 需要明确指定的隐藏导入模块列表。这里没有指定任何隐藏导入模块。 hookspath=[], # 钩子文件的路径列表,用于处理特定模块的导入问题。这里为空列表,表示没有额外的钩子路径。 hooksconfig={}, # 钩子配置选项的字典,用于定制导入钩子的行为。这里为空字典,表示没有特定的钩子配置。 runtime_hooks=[], # 运行时钩子列表,这些钩子在运行时修改导入行为。这里为空列表,表示没有运行时钩子。 excludes=[], # 被排除在打包之外的模块列表。这里为空列表,表示没有需要排除的模块。 noarchive=False, # 控制是否将 Python 源代码打包到归档中。这里设置为 False,表示允许将 Python 源代码打包到归档中。 optimize=0, # 优化级别,控制生成的字节码的优化等级。这里设置为 0,表示没有进行任何优化。 )
通过上面的配置,然后在命令行运行pyinstaller your_script.spec
,就可以把你的项目连接上这些数据资源了!
结尾再附一个pyinstaller命令的详细链接(个人感觉写的挺好的)https://jdreamheart.com/wiki/dailyrecord/install/py_wxpython_pyInstaller.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)