Как достать ПИТОНАТУ в оболочке?
[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
не может получить их все?
Ответы
Ответ 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.