如何使用setuptools在所有安装和分发情况下访问数据文件



我有点迷失在所有可以添加数据文件的位置。首先是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步骤引起的。

相关内容

  • 没有找到相关文章

最新更新