【发布时间】:2021-09-20 15:09:57
【问题描述】:
我有一个具有以下结构的项目:
myproject/
data/
<some directories>
src/
myproject/
<python code>
tests/
<some tests>
setup.py
config.ini
pyproject.toml
requirements.txt
我想在我的项目中引用 data/ 目录中的文件,而不将它们包含在源代码分发中。我认为最好的方法是使用配置文件(通过 ConfigParser,尽管我想你可以使用 YAML 或其他东西)。
Python 的 distutils/setuptools 似乎通过 setuptools.setup() 中的 data_files 选项为此提供了解决方案。按照我的理解,data_files 选项允许通过将它们复制到系统上的某个位置(即 sys.prefix)来访问包外的任意文件。这似乎是配置文件的理想选择,用户可以在安装之前对其进行编辑。
但是,由于文件被复制到某个未知位置,它会破坏 config.ini 中指定的任何相对路径。那么,你是怎么处理的呢?
我猜这可能需要配置文件中的绝对路径,但这对用户不太友好。
有没有更好的方法来访问通过包中的配置文件指定的数据文件?
【问题讨论】:
标签: python setuptools packaging configparser