我正在开发具有几个.TXT依赖的Python的鸡蛋(他们使用的鸡蛋本身生成的文件模板),和我挣扎着爬复制site-packages期间setup.py install这些依赖。根据 distribute文档 ...

我的包的文件系统:

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。不幸的是,他们没有被复制site-packages期间setup.py install。我缺少什么?

谢谢!

有帮助吗?

解决方案

你有没有看了setuptools的文档,这里包括包数据: HTTP: //peak.telecommunity.com/DevCenter/setuptools#including-data-files

基本上,你只需要设置include_package_data=True在你的setup.py文件。如果你正在使用颠覆或CVS,所有版本的文件将被包括在内。如果没有,你可以指定哪些文件具有MANIFEST.in文件包括。

相信分发支撑这一点。

您可以再访问这些文件,你会没有他们被包装。即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,使所有的文件在安装过程中解压缩。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top