我正在开发一个Python蛋,它有几个.txt依赖项(它们是用于通过egg本身生成文件的模板),而且我很难在{site-packages
期间将这些依赖项复制到setup.py install
1}}。根据{{3}} ...
我的软件包的文件系统:
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
。我错过了什么?
谢谢!
答案 0 :(得分:4)
您是否查看了setuptools文档,其中包含了数据包数据:http://peak.telecommunity.com/DevCenter/setuptools#including-data-files
基本上,您只需在setup.py文件中设置include_package_data=True
即可。如果您使用的是subversion或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
,以便在安装过程中解压缩所有文件。