使用setuptools / distribute打包资源
我正在开发一个具有多个.txt依赖项的Python egg(它们是用于通过egg本身生成文件的模板),而我正努力将这些依赖项复制到site-
packages
期间setup.pyinstall
。根据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文档,其中包含软件包数据:https ://setuptools.readthedocs.io/en/latest/setuptools.html#include-
data-files基本上,您只需要
include_package_data=True
在setup.py文件中进行设置即可。如果您使用的是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()
这也可以在打包版本中使用。一个警告是您还必须
zip_safe = False
在setup.py中进行设置,以便在安装过程中解压缩所有文件。