How to get the PYTHONPATH in shell?
Solution 1
The environment variable PYTHONPATH
is actually only added to the list of locations Python searches for modules. You can print out the full list in the terminal like this:
python -c "import sys; print(sys.path)"
Or if want the output in the UNIX directory list style (separated by :
) you can do this:
python -c "import sys; print(':'.join(x for x in sys.path if x))"
Which will output something like this:
/usr/local/lib/python2.7/dist-packages/feedparser-5.1.3-py2.7.egg:/usr/local/lib/ python2.7/dist-packages/stripogram-1.5-py2.7.egg:/home/qiime/lib:/home/debian:/us r/lib/python2.7:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib /python2.7/lib-old:/usr/lib/python2.7/lib- dynload:/usr/local/lib/python2.7/dist- packages:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/PIL:/u sr/lib/python2.7/dist-packages/gst-0.10:/usr/lib/python2.7/dist-packages/gtk-2.0: /usr/lib/pymodules/python2.7
Solution 2
Just write:
just write which python
in your terminal and you will see the python path you are using.
Solution 3
Those of us using Python 3.x should do this:
python -c "import sys; print(sys.path)"
Solution 4
Python, at startup, loads a bunch of values into sys.path
(which is "implemented" via a list of strings), including:
- various hardcoded places
- the value of
$PYTHONPATH
- probably some stuff from startup files (I'm not sure if Python has
rcfiles
)
$PYTHONPATH
is only one part of the eventual value of sys.path
.
If you're after the value of sys.path
, the best way would be to ask Python (thanks @Codemonkey):
python -c "import sys; print sys.path"
Solution 5
You can also try this:
Python 2.x:
python -c "import sys; print '\n'.join(sys.path)"
Python 3.x:
python3 -c "import sys; print('\n'.join(sys.path))"
The output will be more readable and clean, like so:
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload /Library/Python/2.7/site-packages /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC
Comments
-
showkey almost 2 years
debian@debian:~$ echo $PYTHONPATH /home/qiime/lib/: debian@debian:~$ python Python 2.7.3 (default, Jan 2 2013, 16:53:07) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path ['', '/usr/local/lib/python2.7/dist-packages/feedparser-5.1.3-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/stripogram-1.5-py2.7.egg', '/home/qiime/lib', '/home/debian', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib- dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7']
How can I get all of
PYTHONPATH
output in bash?
Whyecho $PYTHONPATH
can not get all of them? -
abalter almost 8 yearsThat's the path to the python executable NOT the PYTHONPATH. PYTHONPATH is where python itself looks for modules to import.
-
variable over 4 yearsIs sys path same as PYTHONPATH?
-
Hubro over 4 years@variable No, the paths in
PYTHONPATH
is added to the paths insys.path
when the Python interpreter starts. In other words,sys.path
will include all the paths inPYTHONPATH
, but also additional paths, like the path to the Python standard library and the path to installed packages. -
variable over 4 yearsOK, Please can you advise how I can get the value of PYTHONPATH?
-
Hubro over 4 years@variable In bash
echo $PYTHONPATH
, in Python 3import os; print(os.environ["PYTHONPATH"])
-
variable over 4 yearsThis gives me syntax error (pointing to end of import word - EOL while scanning string literal): python -c 'import os; print(os.environ["PYTHONPATH"])'. If I use double quote then it says "name 'PYTHONPATH' is not defined"
-
Hubro over 4 years@variable This works for me (Python 3):
PYTHONPATH=test python -c 'import os; print(os.environ["PYTHONPATH"])'
. If you're still having problems I'm in the Python 3 chat room. Let's not pollute the comment section here :) -
qurban over 4 yearsThe path where Python itself exists is called PYTHON_HOME or PYTHONHOME
-
Pauli over 4 yearsPlease notice that there is a typo in the second line of code. It should read 'python', not 'python3'.
-
Goblinhack over 4 yearsslight mod to the original: PYTHONPATH=$(python -c "import os, sys; print(os.pathsep.join(x for x in sys.path if x))")
-
Technophile over 2 years@Pauli not a typo. One (old) convention is to install Python 2.7 as "python" and Python 3.x as "python3".