gpt4 book ai didi

python - 如何使用 python-dotenv 的 "find_dotenv"方法

转载 作者:行者123 更新时间:2023-12-05 00:41:05 27 4
gpt4 key购买 nike

我已经 pip 安装了 python-dotenv模块并尝试按如下方式使用它。我用以下树创建了一个目录 test_dotenv:

.
├── config.env
└── test_dotenv_subdir
└── test_dotenv.py

config.env 文件只是一个空文件,而 test_dotenv.py 包含以下内容:

import dotenv

found_dotenv = dotenv.find_dotenv()
print(found_dotenv)

但是,如果我使用 python test_dotenv.py 运行此脚本,我发现什么都没有打印出来;也就是说,found_dotenv 是一个空字符串 ('')。

我是否遗漏了有关如何使用此方法的内容?据我所知,这里是 source code 的相关部分:

def _walk_to_root(path):
"""
Yield directories starting from the given directory up to the root
"""
if not os.path.exists(path):
raise IOError('Starting path not found')

if os.path.isfile(path):
path = os.path.dirname(path)

last_dir = None
current_dir = os.path.abspath(path)
while last_dir != current_dir:
yield current_dir
parent_dir = os.path.abspath(os.path.join(current_dir, os.path.pardir))
last_dir, current_dir = current_dir, parent_dir


def find_dotenv(filename='.env', raise_error_if_not_found=False, usecwd=False):
"""
Search in increasingly higher folders for the given file

Returns path to the file if found, or an empty string otherwise
"""
if usecwd or '__file__' not in globals():
# should work without __file__, e.g. in REPL or IPython notebook
path = os.getcwd()
else:
# will work for .py files
frame_filename = sys._getframe().f_back.f_code.co_filename
path = os.path.dirname(os.path.abspath(frame_filename))

for dirname in _walk_to_root(path):
check_path = os.path.join(dirname, filename)
if os.path.exists(check_path):
return check_path

if raise_error_if_not_found:
raise IOError('File not found')

return ''

似乎 os.path.exists(check_path) 一直在返回 False,因此最终返回了一个空字符串。为什么这没有按预期工作?

最佳答案

dotenv 包会在您调用 find_dotenv 时查找字面上称为 .env 的文件,而不是查找 之类的文件 .env。 (例如 config.env)

您可以通过将文件名传递给 find_dotenv 来让您的代码找到所需的文件,即

import dotenv

found_dotenv = dotenv.find_dotenv('config.env')
print(found_dotenv)

关于python - 如何使用 python-dotenv 的 "find_dotenv"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125023/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com