首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python-dotenv不能在自定义包中工作。

python-dotenv不能在自定义包中工作。
EN

Stack Overflow用户
提问于 2020-10-12 13:13:45
回答 3查看 3.9K关注 0票数 0

我一直在我的python应用程序中成功地使用python。我现在开始重构和创建包来保存我的一些支持文件。当我将.env文件移动到包文件夹中时,不会设置env变量。

作为一个例子

下面的结构可以工作。

代码语言:javascript
复制
/
- app.py
- .env
代码语言:javascript
复制
#app.py
import os
from dotenv import load_dotenv
load_dotenv()
print(os.getenv("DB_PASSWORD"))

结果:kdfhsffdfjd

下面的结构不工作

代码语言:javascript
复制
/
- database
  - __init__.py
  - connection.py
  - .env
- app.py
代码语言:javascript
复制
#connection.py
import os
from dotenv import load_dotenv
load_dotenv()
print(os.getenv("DB_PASSWORD"))

结果:

代码语言:javascript
复制
# app.py
from database import connection
EN

回答 3

Stack Overflow用户

发布于 2020-10-12 13:19:44

您需要实际调用load_dotenv函数。您可以将.env文件路径作为参数传递,也可以尝试使用find_dotenv方法:

代码语言:javascript
复制
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())

# or
load_dotenv(path_to_dotenv_file)
票数 2
EN

Stack Overflow用户

发布于 2021-07-29 10:20:20

作为以后的参考,我也遇到了同样的问题,但上面的任何一个问题都没有帮助--我使用的是pipenv,而且当我从另一个位置运行pipenv时(它不是项目根文件夹),它不会从.env文件中加载反置。在关闭shell并在根文件夹中再次运行它之后,它工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2020-10-12 13:44:26

解决方案是将.env文件保存在我的项目的根目录中。这在许多层面上都是有意义的。

  1. 它确保只有一个.env文件存在。
  2. .env文件的全部意义是我不想在Git中发布我的秘密。如果.env文件位于包中,用户将不得不通过添加一个.env文件来编辑包,可能在多个位置。

总之,我仍然可以在包中使用load_dotenv(),但是.env文件必须位于项目的根中。@GProst建议我应该能够在包中访问它,但我无法让它起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64318609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档