如何使用python 2.7从特定文件读取环境变量

时间:2018-08-30 10:06:22

标签: python environment-variables

为了声明许多环境变量,然后使用它们调用某些python脚本,我创建了一个myfile.sh文件,该文件将由bash myfile.sh运行。 但是,我有很多脚本应该读取这些环境变量,但是无法为每个脚本创建一个myfile.sh!

所以我的想法是创建一个环境变量文件,并通过我的每个python脚本访问它。

所以我的问题是,如何使用python 2.7访问此类文件?

最相关的问题如下: os.environ从哪里读取环境变量?

应该注意,我无法安装其他库,例如dotenv。因此,如果可能的话,解决方案应该基于标准库。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

  

我必须创建一个新的环境变量文件,该脚本文件应该可以访问该文件。

这不是它的工作方式。您需要在调用脚本之前从文件中设置环境变量:

myenv.sh

export DB_USER="foo"
export DB_PWD="bar"
export DB_NAME="mydb"
# etc

myscript.py

import os

DB_USER = os.getenv("DB_USER")
DB_PWD = os.getenv("DB_PWD")
DB_NAME = os.getenv("DB_NAME")

# etc

然后

$ source /path/to/myenv.sh
$ python /path/to/myscript.py

通常,您会希望将以上两行包装在shell脚本中,以使sysadmin的工作更加轻松。

编辑:如果希望“自动”设置这些环境变量,则始终可以从.bashrc或类似的地方获取它们-但这是一个sysadmin问题,而不是编程问题。

现在的问题是:您真的需要在这里使用环境变量吗?您也可以使用python设置文件-一个仅定义这些变量的普通Python模块,即:

mysettings.py

DB_USER = "foo"
DB_PWD = "bar"
# etc

,并确保包含该脚本的目录的路径在$ PYTHONPATH中。然后,您的脚本只需导入它(就像它们导入任何其他模块一样),就完成了。

锦上添花:您甚至可以混合两种解决方案,方法是让设置模块查找环境变量并提供默认值,即:

mysettings.py

import os
DB_USER = os.getenv("DB_USER", "foo")
DB_PWD = os.getenv("DB_PWD", "bar")
# etc

答案 1 :(得分:0)

从命令行显示环境

  • linux:export
  • windows:set

设置环境变量

  • linux:export foo=bar
  • windows:set foo=bar

打印环境变量:

  • linux:echo $foo
  • windows:echo %foo%