我有点迷失在所有可以添加数据文件的位置。首先,有MANIFEST.in
文件。据我了解,这只是为了指定要包含在“源代码分发”中的源文件。然后是函数的data_files
参数setup()
,您可以在其中列出应该安装的文件,但它来自根目录(无论是/
,还是~user/.local
)。最后,有package_data
一个假装做我想做的事......但在 bdist 上,我看不出有什么不同data_files
我有一个数据文件,比如“default_conf.cfg”。
我的MANIFEST.in
包含:
include default_conf.cfg
我的setup.py
:
setup(
# ...
package_data={
'': ['default_conf.cfg'],
}
)
当我执行 a./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
设置.py:
setup(
# ...
package_data={
'my_module': ['data/default_conf.cfg'],
}
)
但是,当我尝试时pip install --user -e .
,.egg-link 的内容是/.../my_pkg/build/lib
而不是/.../my_pkg
,那么当然,它不是实时可编辑的......为什么 setuptools 使用这个路径?