The docs for sys.path
state the following:
A list of strings that specifies the search path for modules. Initialized from the environment variable PYTHONPATH, plus an installation-dependent default.
So my understanding here is that PYTHONPATH
is an environment variable. Environment variables can be printed out in Powershell using the following command:
PS> echo $ENV:VARIABLENAME
However when I do $ENV:PYTHONPATH
I get no output. If I try to access PYTHONPATH
from a python terminal, I get a KeyError
:
>>> import os
>>> os.environ["PYTHONPATH"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python310\lib\os.py", line 679, in __getitem__
raise KeyError(key) from None
KeyError: 'PYTHONPATH'
However, I know PYTHONPATH
is defined somewhere, because its value does appear when I use sys.path
:
>>> import sys
>>> sys.path
['', 'C:\\Python310\\python310.zip', 'C:\\Python310\\DLLs', 'C:\\Python310\\lib', 'C:\\Python310', 'C:\\Users\\aa\\AppData\\Roaming\\Python\\Python310\\site-packages', 'C:\\Python310\\lib\\site-packages', 'C:\\Python310\\lib\\site-packages\\scons-4.4.0-py3.10.egg', 'C:\\Python310\\lib\\site-packages\\colorama-0.3.2-py3.10.egg', 'C:\\Python310\\lib\\site-packages\\win32', 'C:\\Python310\\lib\\site-packages\\win32\\lib', 'C:\\Python310\\lib\\site-packages\\Pythonwin']
If PYTHONPATH
is truly an environment variable, why can't I access it using either Powershell or os
in my Python interpreter?
PYTHONPATH
is unset. The documentation you quoted does explain this. – RentierPYTHONPATH
? – FirnPYTHONPATH
. If you set something as value forPYTHONPATH
, then this something is added tosys.path
and Python will look for imports in these directories. – Matri