我想在本地环境中运行Python脚本,该脚本通常在Docker容器中运行。该 docker-compose.yml
指定一个 env_file 看起来(部分)如下:
DB_ADDR=rethinkdb
DB_PORT=28015
DB_NAME=ipercron
为了在本地运行,我将这些行转换为
os.environ['DB_ADDR'] = 'rethinkdb'
os.environ['DB_PORT'] = '28015'
os.environ['DB_NAME'] = 'ipercron'
我可以编写我的解析器,但我想知道是否有任何现有的模块/工具可以从配置文件中读取环境变量?
您可以使用 ConfigParser
。可以找到示例 这里。
但是这个图书馆希望你的 key
=value
一些人下的数据 [heading]
。例如,像:
[mysqld]
user = mysql # Key with values
pid-file = /var/run/mysqld/mysqld.pid
skip-external-locking
old_passwords = 1
skip-bdb # Key without value
skip-innodb
仅使用python标准
import re
envre = re.compile(r'''^([^\s=]+)=(?:[\s"']*)(.+?)(?:[\s"']*)$''')
result = {}
with open('/etc/os-release') as ins:
for line in ins:
match = envre.match(line)
if match is not None:
result[match.group(1)] = match.group(2)
这也适合你:
env_vars = []
with open(env_file) as f:
for line in f:
if line.startswith('#'):
continue
# if 'export' not in line:
# continue
# Remove leading `export `, if you have those
# then, split name / value pair
# key, value = line.replace('export ', '', 1).strip().split('=', 1)
key, value = line.strip().split('=', 1)
# os.environ[key] = value # Load to local environ
env_vars.append({'name': key, 'value': value}) # Save to a list
print(env_vars);
在评论中你会发现一些不同的方法来保存环境变量,还有一些解析选项,即摆脱领先 export
关键词。另一种方法是使用 蟒蛇,dotenv 图书馆。干杯。