10 python setuptools distribute pypi
我正在开发一个具有几个.txt依赖项的Python egg(它们是用于通过egg本身生成文件的模板),而且我很难将这些依赖项复制到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
Run Code Online (Sandbox Code Playgroud)
在setup.py中:
setup(
[...]
eager_resources = ['templates/file1.txt', 'templates/file2.txt']
)
Run Code Online (Sandbox Code Playgroud)
在我的包裹内:
from pkg_resources import resource_string
tpl = resource_string(__name__, 'templates/file1.txt')
Run Code Online (Sandbox Code Playgroud)
...配置和文件系统的这种组合应该导致file1.txt
并file2.txt
通过pkg_resources.resource_string
.不幸的是,他们没有被复制到site-packages
期间setup.py install
.我错过了什么?
谢谢!
小智 5
您是否在此处查看了包含包数据的 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()
Run Code Online (Sandbox Code Playgroud)
这也适用于打包版本。一个警告是,您还必须zip_safe = False
在 setup.py 中进行设置,以便在安装过程中解压缩所有文件。