python - 如何使用 python 2.7 从特定文件中读取环境变量
问题描述
为了声明一些环境变量,然后使用它们调用一些 python 脚本,我创建了一个 myfile.sh 文件,该文件由 bash myfile.sh 运行。但是,我有很多脚本应该读取这些环境变量,但不能为每个脚本创建一个 myfile.sh!
所以我的想法是创建一个环境变量文件并通过我的每个 python 脚本访问它。
所以我的问题是,如何使用 python 2.7 访问这样的文件?
一个最相关的问题如下: os.environ 从哪里读取环境变量?
应该注意的是,我无法安装其他库,例如 dotenv。因此,如果可能,解决方案应该基于标准库。
任何帮助将不胜感激!
解决方案
我必须创建一个应该由我的脚本访问的新环境变量文件。
这不是它的工作原理。您需要在调用脚本之前从文件中设置环境变量:
myenv.sh
export DB_USER="foo"
export DB_PWD="bar"
export DB_NAME="mydb"
# etc
我的脚本.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 脚本中,以使您的系统管理员的工作更轻松。
编辑:如果您希望这些环境变量“自动”设置,您始终可以从 .bashrc 或类似的地方获取它们 - 但这是一个系统管理员问题,而不是编程问题。
现在的问题是:你真的需要在这里使用环境变量吗?您也可以使用 python 设置文件 - 一个仅定义这些变量的普通 Python 模块,即:
我的设置.py
DB_USER = "foo"
DB_PWD = "bar"
# etc
并确保包含此脚本的目录的路径在您的 $PYTHONPATH 中。然后你的脚本只需要导入它(就像它们导入任何其他模块一样),你就完成了。
锦上添花:您甚至可以混合使用这两种解决方案,方法是让您的设置模块查找环境变量并提供默认值,即:
我的设置.py
import os
DB_USER = os.getenv("DB_USER", "foo")
DB_PWD = os.getenv("DB_PWD", "bar")
# etc
推荐阅读
- reactjs - useEffect 依赖警告
- qt - Qt:为什么在 QMainWindow 中添加状态栏会影响大小调整?
- java - 如何使用 Java 在 Excel 文件中查找特定单词
- c - 我正在尝试使用泰勒级数为 sin x 编写 ac 程序,但在执行程序时无法找出我的错误
- css - CSS shape-outside 和响应式内容
- python - 在 Keras 中使用 RMSSE 作为损失函数
- java - 如何在 Android 11 中列出特定目录中的媒体文件?
- react-native - 如何呈现 SectionList Header?
- python - 程序应该产生一个输出值
- python - ox.stats.basic_stats 在 ox.graph.graph_from_place 更改 clean_periphery 时出错