The README states (emphasis mine)
The easiest and most common usage consists on calling load_dotenv when the application starts, which will load environment variables from a file named .env in the current directory
I'm not finding this to be the case. load_dotenv defaults to calling find_dotenv():
|
def load_dotenv(dotenv_path=None, stream=None, verbose=False, override=False): |
|
f = dotenv_path or stream or find_dotenv() |
|
return DotEnv(f, verbose=verbose).set_as_environment_variables(override=override) |
but usecwd defaults to False:
|
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 '' |
In my case, path becomes '<venv path>/lib/python3.6/site-packages/dotenv' on line 236 so the current directory is never traversed.
The README states (emphasis mine)
I'm not finding this to be the case.
load_dotenvdefaults to callingfind_dotenv():python-dotenv/dotenv/main.py
Lines 249 to 251 in b20d818
but
usecwddefaults toFalse:python-dotenv/dotenv/main.py
Lines 224 to 246 in b20d818
In my case, path becomes '<venv path>/lib/python3.6/site-packages/dotenv' on line 236 so the current directory is never traversed.