一旦通过 setuptools 或 distutils 安装了 Python 包,如何访问可编辑的配置文件?

How to access an editable configuration file once a Python package has been installed via setuptools or distutils?

如何允许使用 'python setup.py install' 安装的软件包访问外部配置文件?

我目前正在尝试使用 distutils/setuptools 为 RHEL 安装 Python 软件包。这个 Python 包最初是以这样的方式编写的,它作为一组脚本运行,需要文件系统访问各种配置文件、日志等。现在我正在尝试创建一个可安装的包这个设置,我在与文件系统交互以获得必要的文件时遇到困难。

这些文件应该是可编辑的。除了基本问题之外,此类行为的最佳实践是什么? IE。管理通过 setuptoolsdistutils 安装的 Python 包的配置以及这些包与文件系统交互的最佳实践是什么。我假设这个硬币有两半:在安装端配置文件的位置,以及在代码实现端访问信息。对于优化这两个方面的任何建议,我们将不胜感激。

附加信息:

安装包后,我基本上需要访问 "config" 目录。 'config' 目录的位置可以是文件系统上的任何位置(用户有权访问),并且应该在安装包之前对其本身进行配置。该项目如下所示:

您可以使用 data_files option in distutils 安装数据文件。但是,distutils/setuptools 在处理配置文件方面的范围非常有限。您只能指定将安装这些文件的相对 绝对路径,没有使此安装位置用户可配置的选项。

处理安装和读取配置文件的最佳实践?我不认为有任何东西被规范地视为 "best"。 distutils 的功能非常有限,因此无法满足很多用例。您基本上可以按照您的要求以任何方式处理配置文件。

如果你想在安装前配置配置文件的位置,你需要比 distutils 提供更多的东西。几种可能的处理方法:

  1. 将代码添加到您的 setup.py 脚本中以处理此问题。 setup.py 可以处理任意 Python 代码,因此它可以扩展到所需的 setup() 调用之外,以执行您需要的任何操作。但是,这样做被认为是意外的和不标准的。在 setuptools 和 pip 等工具出现之前,软件包有时会有一个交互式提示,要求用户输入安装信息。但是,当该软件包由 pip 或 easy_install.

  2. 等自动安装程序安装时,这会中断
  3. 编写您自己的安装程序。这会处理配置文件安装位置的详细信息,并在后台安装 Python 软件包。

  4. 在 linux 环境中,Buildout 工具对此很有帮助。这将要求用户安装 Buildout,然后使用配置文件位置编辑 buildout.cfg 配置文件。它可能是管理应用程序配置的有用方法,但它确实需要进行安装的人员安装 Buildout 并编辑基于 bulidout 的配置文件。这方面的一个例子是 Plone 项目,它有一个复杂且可配置的安装过程,而 Buildout 用于管理这个过程。