python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > 打包依赖文件至目标程序目录

PyInstaller如何打包依赖文件至目标程序目录

作者:高处欲乘风

这篇文章主要介绍了PyInstaller如何打包依赖文件至目标程序目录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

打包依赖文件至目标程序目录

问题

我使用 PySide2 开发了一个应用程序,为了方便其他人使用,我便使用 PyInstaller 打包成 *.exe。打包模式为 one-folder,即生成的目标文件是一个文件夹,里面包含了该 *.exe 文件及该 *.exe 所依赖的全部文件。

打开该文件夹,截图如下:

在这里插入图片描述

一切都很顺利,但是有这样一个问题,程序运行时依赖几个文件(*.png,*.txt),没有给我打包至目标目录下,*.exe 就找不到文件了,也就无法运行。

解决办法

*使用配置文件 .spec,指定依赖的文件一起打包。

配置文件重点部分内容:

a = Analysis(['MainWindow.py'],
             pathex=['E:\\7-Pycharm\\contrl_sys_ui'],
             binaries=[],
             datas=[("./other", "other"), ("./QtDesigner", "QtDesigner")],

datas 这个选项给 (原文件路径, 目标文件路径) 元组。原文件路径是文件/文件夹在电脑上的路径,打包时,PyInstaller 会根据我们指定的原文件路径去复制我们指定的原文件到目标文件路径下。

目标文件路径是以打包生成的目标程序所在目录为跟目录。

例如,我的打包目录是 ./dist/MainWindow,那么 PyInstaller 就会在复制 ./other 和 ./QtDesigner 到 ./dist/MainWindow 目录下。

在打包的目标文件中,就能发现我们想要一起打包的文件夹也全部打包过来了,截图如下:

在这里插入图片描述

pyinstaller打包exe有依赖文件

pyinstaller 配置文件不要设置在.spec 上,不然更新配置文件不生效,使用os.getcd()获取exe执行路径即可

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文