我有点迷失在所有可以添加数据文件的位置。首先是MANIFEST.in
文件。据我所知,这只是为了指定要包含在"源分发"中的源文件。然后,还有setup()
函数的data_files
参数,其中列出了应该安装的文件,但它来自根目录(/
或~user/.local
(。最后,还有package_data
,它假装做我想做的事。。。但在bdist上,我看不出与data_files
有任何区别
我有一个数据文件,说"default_conf.cfg"。
我的MANIFEST.in
包含:
include default_conf.cfg
和我的setup.py
:
setup(
# ...
package_data={
'': ['default_conf.cfg'],
}
)
当我做./setup.py sdist
时,文件被包括在内,与./setup.py bdist
(如预期(相同
但是,如果我尝试以可编辑包(pip install --user -e .
(的形式安装,则无法使用pkg_resources.resource_string(__name__, 'default_conf.cfg')
访问它
我缺少什么才能在分发/安装时从任何类型访问它?
(文档非常冗长,信息分散在几个页面上,因此很容易遗漏一些内容。(
编辑
我把我的数据文件作为我的模块的子目录,它似乎更好:
my_pkg/
|-my_pkg/
| |-__init__.py
| |-data/
| | |-default_conf.cfg
|
|-setup.py
setup.py:
setup(
# ...
package_data={
'my_module': ['data/default_conf.cfg'],
}
)
然而,当我尝试使用pip install --user -e .
时,.egg链接的内容是/.../my_pkg/build/lib
而不是/.../my_pkg
,当然,它是不可实时编辑的。。。setuptools为什么使用此路径?
编辑实际上回答了这个问题。安装可编辑问题是由我的setup.py模板中默认的py2to3步骤引起的。