-
Notifications
You must be signed in to change notification settings - Fork 489
Closed
Description
The README states (emphasis mine)
The easiest and most common usage consists on calling
load_dotenvwhen 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():
Lines 249 to 251 in b20d818
| 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:
Lines 224 to 246 in b20d818
| 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.
cjauvin, joemirizio, thepatrik, jimdickinson, squarewave24 and 2 more
Metadata
Metadata
Assignees
Labels
No labels