Python os.environ throws key error?
Try running:
find . -name \*.pyc -delete
To delete your .pyc
files.
Researching your problem I came across this question, where a user was experiencing the same thing: .get()
seemingly raising a KeyError
. In that case, it was caused, according to this accepted answer, by a .pyc
file which contained code where a dict
value was being accessed by key (i.e., mydict['potentially_nonexistent_key']
), while the traceback was showing the code from the updated .py
file where .get()
was used. I have never heard of this happening, where the traceback references current code from a .py
file, but shows an error raised by an outdated .pyc
file, but it seems to have happened at least once in the history of Python...
It is a long shot, but worth a try I thought.
Command for windows to delete the .pyc files:
del /S *.pyc
I encountered a similar error when I set the environment variable without exporting it. So if you do this:
me@host:/# NODE_ENV=foo
You will get this:
me@host:/# python3
Python 3.8.2 (default, Apr 27 2020, 15:53:34)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> node_env = os.environ['NODE_ENV']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.8/os.py", line 675, in __getitem__
raise KeyError(key) from None
KeyError: 'NODE_ENV'
>>>
But if you do this:
me@host:/# NODE_ENV=foo
me@host:/# export NODE_ENV
It works:
me@host:/# python3
Python 3.8.2 (default, Apr 27 2020, 15:53:34)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> node_env = os.environ['NODE_ENV']
>>> print(node_env)
foo
>>>