gpt4 book ai didi

python - 使用 setuptools/distribute 打包资源

转载 作者:太空狗 更新时间:2023-10-29 19:27:00 24 4
gpt4 key购买 nike

我正在开发一个 Python egg,它有几个 .txt 依赖项(它们是 egg 本身用来生成文件的模板),我正在努力将这些依赖项复制到 site-packagessetup.py install 期间。根据distribute documentation ...

我的包的文件系统:

setup.py
package
|--- __init__.py
|--- main.py
|--- binary (calls main.py with pkg_resources.load_entry_point)
|--- templates
|--file1.txt
|--file2.txt

在 setup.py 中:

setup(
[...]
eager_resources = ['templates/file1.txt', 'templates/file2.txt']
)

在我的包裹中:

from pkg_resources import resource_string
tpl = resource_string(__name__, 'templates/file1.txt')

...这种配置和文件系统的组合应该导致 file1.txtfile2.txt 通过 pkg_resources.resource_string 可用。不幸的是,在 setup.py install 期间,它们没有被复制到 site-packages。我错过了什么?

谢谢!

最佳答案

可以在安装工具文档中找到包含包数据的信息:https://setuptools.readthedocs.io/en/latest/setuptools.html#including-data-files

基本上,您只需在 setup.py 文件中设置 include_package_data=True。如果您使用的是 subversion 或 CVS,所有版本控制的文件都将包含在内。如果没有,您可以指定要包含在 MANIFEST.in 文件中的文件。

我相信 distribute 也支持这一点。

然后您可以像没有打包文件一样访问这些文件。即在 main.py 中你可以:

import os.path
f = open(os.path.join(os.path.dirname(__file__),'templates','file1.txt'))
print f.read()
f.close()

这也适用于打包版本。需要注意的是,您还必须在 setup.py 中设置 zip_safe = False,以便在安装过程中解压缩所有文件。

关于python - 使用 setuptools/distribute 打包资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1732619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com