包装资源与setuptools的/分发
-
20-09-2019 - |
题
我正在开发具有几个.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.txt
和file2.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
,使所有的文件在安装过程中解压缩。
不隶属于 StackOverflow