Подтвердить что ты не робот

Как достать ПИТОНАТУ в оболочке?

[email protected]:~$ echo $PYTHONPATH  
/home/qiime/lib/:  
[email protected]:~$ 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']    

Как я могу получить весь вывод PYTHONPATH в bash?
Почему echo $PYTHONPATH не может получить их все?

4b9b3361

Ответ 1

Переменная окружения PYTHONPATH фактически добавляется в список местоположений. Python ищет модули. Вы можете распечатать полный список в терминале следующим образом:

python -c "import sys; print(sys.path)"

Или, если вы хотите получить результат в стиле списка каталогов UNIX (разделенный :), вы можете сделать это:

python -c "import sys; print(':'.join(x for x in sys.path if x))"

Что выведет что-то вроде этого:

/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

Ответ 2

Просто напишите:

просто напишите , который python в вашем терминале, и вы увидите путь python, который вы используете.

Ответ 3

Те из нас, кто использует Python 3.x, должны сделать это:

python -c "import sys; print(sys.path)"

Ответ 4

При запуске Python загружает кучу значений в sys.path (который "реализован" с помощью списка строк), в том числе:

  • различные жестко закодированные места
  • значение $PYTHONPATH
  • вероятно, некоторые вещи из файлов запуска (я не уверен, что в Python есть rcfiles)

$PYTHONPATH - это только одна часть возможного значения sys.path.

Если вам нужно значение sys.path, лучше всего спросить Python (спасибо @Codemonkey):

python -c "import sys; print sys.path"

Ответ 5

Вы также можете попробовать это:

Python 2.x:
python -c "import sys; print '\n'.join(sys.path)"

Python 3.x:
python3 -c "import sys; print('\n'.join(sys.path))"

Вывод будет более читабельным и чистым, например:

/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

Ответ 6

Добавляя к ответу @zzzzzzz, я выполнил команду: python3 -c "import sys; print(sys.path)", и она предоставила мне разные пути по сравнению с той же командой с python. Пути, отображаемые с помощью python3, были "ориентированы на python3".

Смотрите вывод двух разных команд:

python -c "import sys; print(sys.path)"

['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/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/local/lib/python2.7/dist-packages/setuptools-39.1.0-py2.7.egg', '/usr/lib/python2.7/dist-packages']

python3 -c "import sys; print(sys.path)"

['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']

Обе команды были выполнены на моем компьютере Ubuntu 18.04.