Pyinstaller not picking up Tree or Data files(Pyinstaller不拾取树或数据文件)
问题描述
我正在尝试使用pyinstaller:print 'hello world!'生成非常基本的python脚本,并且我正在尝试使数据文件或数据文件目录可供二进制文件使用。
我反复阅读文档,尝试使用1.5、2.0和开发版本2.0构建,尝试使用--onefile和--onedir构建,尝试在OS X和Linux上构建,但由于某种原因,我的.spec文件中的数据文件/树语句似乎被忽略了。
以下是我尝试过的一些.spec文件变体:
coll = COLLECT(exe,
a.binaries
[('README','/Users/username/my_little_app/foo','DATA')],
Tree('/Users/username/my_little_app/foo','foo'),
Tree('/foo','foo'),
Tree('my_little_app/foo','foo'),
[('my_xml_file.xml','my_little_app/partner.xml','DATA')],
a.zipfiles,
a.datas,
strip=None,
upx=True,
name=os.path.join('dist', 'my_little_app'))
a.datas += [('my_xml_file.xml', '/Users/username/my_little_app/my_xml_file.xml', 'DATA')]
我是不是遗漏了什么??
推荐答案
这个答案太晚了,但是将任意文件添加到PyInstaller构建中的方法有非常清晰的文档记录:
https://pyinstaller.readthedocs.io/en/stable/spec-files.html#adding-files-to-the-bundle
元组中的第一个字符串是文件的路径,第二个字符串是它在构建的包下的路径。换句话说,您的最后一行应该是这样的:
a.datas += [("/path/to/my_xml_file.xml", "my_xml_file.xml")]
您还可以添加完整目录,如下所示:
a.datas += [("/path/to/dir", "dir")]
我已添加下面文档的相关部分。
Adding Files to the Bundle
若要将文件添加到包,请创建描述文件的列表并将其提供给Analysis调用。
Adding Data Files
您提供了一个列表,将文件描述为datas=的datas=参数值。数据文件列表是元组列表。每个元组都有两个值,这两个值都必须是字符串:
- 第一个字符串指定此系统中当前的一个或多个文件。
- 第二个参数指定运行时捆绑的应用程序中的文件名。
例如,要将单个自述文件添加到单文件夹应用程序,您可以按如下方式修改SPEC文件:
a = Analysis(...
datas=[ ('src/README.txt', 'README') ],
hiddenimports=...
)
您已使datas=参数成为单项列表。该项是一个元组,其中第一个字符串表示现有文件是src/README.txt。此文件将复制到名为README的捆绑包中。
如果在单独的语句中创建添加的文件列表,则规范文件的可读性更好:
added_files = [
( 'src/README.txt', 'README' )
]
a = Analysis(...
datas= added_files,
...
)
字符串可以使用/或作为路径分隔符。您可以使用";glob";缩写指定输入文件。当输入是多个文件时,输出字符串可以是文件夹的名称。例如,要包含某个文件夹中的所有.mp3文件:
added_files = [
( '/mygame/sfx/*.mp3', 'sfx' ),
( 'src/README.txt', 'README' )
]
所有与/mygame/sfx/*.mp3匹配的文件都将复制到捆绑包中,并存储在名为sfx的文件夹中。
您还可以包括文件夹的全部内容:
added_files = [
( '/mygame/data', 'data' ),
( '/mygame/sfx/*.mp3', 'sfx' ),
( 'src/README.txt', 'README' )
]
/mygame/data中的所有文件都将递归复制到捆绑包中名为data的文件夹中。
这篇关于Pyinstaller不拾取树或数据文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Pyinstaller不拾取树或数据文件
基础教程推荐
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- 包装空间模型 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- 求两个直方图的卷积 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
