在将图像和 txt 等数据文件添加到 python 程序时,我遇到了 pyinstaller 的问题。例如,我创建了一个带有图标的工具栏,并将它们存储在一个名为 images 的单独文件夹中。我还有一些 txt 和 xml 文件来存储一些配置。这些 txt ant xml 文件存储在另一个名为 data_files 的文件夹中。所有 py 文件都存储在另一个名为 source 的文件夹中。
当我尝试使用 pyinstaller 构建这个 python 程序时,pyinstaller 可以成功构建所有源文件夹,但无法构建 images 和 data_files 文件夹。我检查了 pyinstaller 的文档,但找不到任何解决方案。我做了很多谷歌搜索,发现只有这个资源有帮助,但这是一个非常不足的资源。
我的主要问题是:如何使用 pyinstaller 使用单独构建的文件夹(例如 images 和 confs)构建 exe 文件?
编辑: 我找到了解决方案。创建规范文件时,您必须使用a.datas参数。
# -*- mode: python -*-
a = Analysis([os.path.join(HOMEPATH,'support/_mountzlib.py'), os.path.join(HOMEPATH,'support/useUnicode.py'), '/home/vmode/Desktop/derlem2/sources/TextSTAT.py'],
pathex=['/home/pyinstaller'])
a.datas += [("Images/New.gif","/home/vmode/Desktop/derlem2/Images/New.gif","DATA")]
a.datas += [("Images/Open.gif","/home/vmode/Desktop/derlem2/Images/Open.gif","DATA")]
a.datas += [("Images/Column.gif","/home/vmode/Desktop/derlem2/Images/Column.gif","DATA")]
pyz = PYZ(a.pure)
exe = EXE( pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name=os.path.join('dist', 'TextSTAT'),
debug=False,
strip=False,
upx=True,
console=1 )
上面的规范代码是为我的项目设计的。正如在这个规范代码中看到的,我已经包含了 3 个用 python 程序构建的图标。生成程序时,会有一个独立的可执行文件,其中嵌入了这些图标。
但是如果我们有这么多文件怎么办?假设我们的程序中有 1000 个图标要使用。手动写到规范文件是非常不合适的。必须有一个循环系统来读取文件目录并动态添加这些文件。但我找不到如何动态添加这些文件。我认为没有任何机会手动添加这么多文件。如果有人知道请分享。