【发布时间】:2018-09-06 04:36:24
【问题描述】:
假设我有一个看起来像这样的.env 文件。
EARTH_SYNONYM1 = "World"
EARTH_SYNONYM2 = "Planet"
EARTH_SYNONYM3 = "Globe"
我已经设法将它加载到命名空间中。
import json
from pathlib import Path
from types import SimpleNamespace
from dotenv.main import dotenv_values # dotenv package needs to be installed.
def json_to_python(json_str):
return json.loads(json_str, object_hook=lambda d: SimpleNamespace(**d))
dotenv_path = Path(".") / ".env"
dotenv_vars_list = dotenv_values(dotenv_path)
dotenv_vars_as_json = json.dumps(dotenv_vars_list)
dotenv_vars = json_to_python(dotenv_vars_as_json)
print(dotenv_vars)
打印出来的
namespace(EARTH_SYNONYM1='World', EARTH_SYNONYM2='Planet', EARTH_SYNONYM3='Globe')
现在我可以做类似的事情
print(f"Hello {dotenv_vars.EARTH_SYNONYM1}")
打印出来的
Hello World
我想要完成的是将它变成一个类模块(我认为)。
我愿意
import dotenv_vars
然后输入
dotenv_vars.
并显示自动完成选项列表。
继续这个例子,每个EARTH_SYNONYMx 都会显示为自动完成选项。
如何使命名空间对象提供自动完成功能?
【问题讨论】:
-
把它写成一个python文件?这就是您通常会导入的内容...
-
你为什么不把你的
.env文件重命名为.py文件并导入它。模块命名空间和任何命名空间一样好...... -
真正的
.env文件被用作真正的本地.env文件。即 - 它保存数据库用户名和密码,并且在.gitignore中用于 git 提交。 -
我猜你们的意思是创建类似
secretstuff.py的东西并将其添加到.gitignore并像任何其他python 文件一样导入它?有一个.env坐在那里并确切地知道它的内容和原因真是太好了。 -
等等,为什么自动完成首先那么重要?
标签: python python-3.x visual-studio-code