包含配置文件

时间:2017-04-28 17:45:23

标签: python containers config

我想收集我在某种容器中处理项目时所做的许多库,以便我可以在我的未来项目中轻松使用它们。我很清楚如何做到这一点,除了一部分。

我假设每个服务都有自己的配置文件(例如,Cache服务,将有一个包含缓存主机和端口的配置文件,依此类推)。现在的问题是:当我想在任意项目中使用这个容器时,我将不得不对项目目录结构做出假设,以便知道在哪里找到这些配置文件。

例如,可以假设在我的库的同一路径上有一个config文件夹,我将在其中找到我的服务的配置文件。但是,这可能与项目的目录结构冲突(例如,项目可能已经有自己的config目录。)

所以,总而言之,我的问题是:是否有一种安全,标准的方式来发布一个可能假定在某个地方找到一些配置文件的库,或者哪个示例配置文件随库本身一起发送?

1 个答案:

答案 0 :(得分:0)

好吧,你不应该保留配置文件,或者你想要修改的任何东西以及python中的代码(或者实际上是任何语言)。每个操作系统都有用于此目的的文件夹。

它是系统范围的,在Unix上是/etc,或者它是~/.config中的用户。你有OSX的Library个文件夹,我确信\Windows\SYSTEM32以外的窗口有类似内容。

这意味着您的配置文件的路径在任何时候都不应被视为与您的代码相关。决不。如初。

您可以使用MANIFEST.in在python包中包含一些资产但是,因为它将在您的python包中,您将认为您无权编写它将在哪里(由管理员安装,由用户运行)。

您还可以使用setup.py的{​​{3}}指令指定要在特定位置安装的部分资产,该指令将相对于sys.prefix安装。

通常的做法是使用文档中的链接提供配置文件示例,或者在启动应用程序时更好地生成这些文件。

此外,桌面的另一个趋势是使用data_files来决定查找位置或放置配置文件的位置。

总结一下:

  • 列出代码期望找到配置的默认路径
  • 可以在命令行手动指定配置python foo.py --config bar.ini
  • 的路径
  • 为您的工具编写一个功能以生成配置(带有一系列问题)
  • 将默认配置部署到标准位置(XDG路径,$ prefix / etc ...)