17

对于我正在编写的 python 程序,我想提供以三种不同方式配置它的机会。环境变量、配置文件和命令行参数。

从逻辑上讲,我认为命令行参数应该始终具有最高优先级。我有点怀疑环境变量是否应该优先于配置文件?配置文件是系统范围的、特定于用户的还是作为命令行参数给出的?

(注意我的平台是 Unix/Linux)

4

2 回答 2

31

我知道的标准是首先查找命令行参数,如果没有找到环境变量,然后是本地配置文件,然后是全局配置文件。

因此,当某个软件包安装在某处时。它将有一个默认的配置文件。这可以通过本地配置文件进行更改。可以使用 environ 参数覆盖,然后命令行参数具有最高优先级。

如果在命令行上声明了配置文件,则其内容将优先于环境参数或任何其他配置文件。但是命令行参数将优先于它。但请记住,搜索路径仍然存在。如果包正在寻找它寻找的 var。

Command line.
Config file thats name is declared on the command line.
Environment vars
Local config file (if exists)
Global config file (if exists)

我认为许多命令行编译器和 Boost 库 config pak 以类似的方式工作

于 2012-06-18T05:20:25.703 回答
2

AWS CLI符合公认的答案:

选项的优先级:

  • 如果您使用本主题中描述的环境变量之一指定选项,它将覆盖从配置文件中的配置文件加载的任何值。

  • 如果您在 CLI 命令行上使用参数指定选项,它会覆盖相应环境变量或配置文件中的配置文件中的任何值。

于 2019-02-15T11:27:18.480 回答