为了声明许多环境变量,然后使用它们调用某些python脚本,我创建了一个myfile.sh文件,该文件将由bash myfile.sh运行。 但是,我有很多脚本应该读取这些环境变量,但是无法为每个脚本创建一个myfile.sh!
所以我的想法是创建一个环境变量文件,并通过我的每个python脚本访问它。
所以我的问题是,如何使用python 2.7访问此类文件?
最相关的问题如下: os.environ从哪里读取环境变量?
应该注意,我无法安装其他库,例如dotenv。因此,如果可能的话,解决方案应该基于标准库。
任何帮助将不胜感激!
答案 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)
从命令行显示环境
export
set
设置环境变量
export foo=bar
set foo=bar
打印环境变量:
echo $foo
echo %foo%