我一直在我的python应用程序中成功地使用python。我现在开始重构和创建包来保存我的一些支持文件。当我将.env文件移动到包文件夹中时,不会设置env变量。
作为一个例子
下面的结构可以工作。
/
- app.py
- .env#app.py
import os
from dotenv import load_dotenv
load_dotenv()
print(os.getenv("DB_PASSWORD"))结果:kdfhsffdfjd
下面的结构不工作
/
- database
- __init__.py
- connection.py
- .env
- app.py#connection.py
import os
from dotenv import load_dotenv
load_dotenv()
print(os.getenv("DB_PASSWORD"))结果:无
# app.py
from database import connection发布于 2020-10-12 13:19:44
您需要实际调用load_dotenv函数。您可以将.env文件路径作为参数传递,也可以尝试使用find_dotenv方法:
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
# or
load_dotenv(path_to_dotenv_file)发布于 2021-07-29 10:20:20
作为以后的参考,我也遇到了同样的问题,但上面的任何一个问题都没有帮助--我使用的是pipenv,而且当我从另一个位置运行pipenv时(它不是项目根文件夹),它不会从.env文件中加载反置。在关闭shell并在根文件夹中再次运行它之后,它工作得很好。
发布于 2020-10-12 13:44:26
解决方案是将.env文件保存在我的项目的根目录中。这在许多层面上都是有意义的。
总之,我仍然可以在包中使用load_dotenv(),但是.env文件必须位于项目的根中。@GProst建议我应该能够在包中访问它,但我无法让它起作用。
https://stackoverflow.com/questions/64318609
复制相似问题