Как мне узнать мой путь к python с помощью python?
-
18-09-2019 - |
Вопрос
Как мне узнать, какие каталоги перечислены в моей системе PYTHONPATH
переменная, из скрипта Python (или интерактивной оболочки)?
Решение
sys.path
может включать элементы, которых нет конкретно в вашем PYTHONPATH
переменная среды.Чтобы запросить переменную напрямую, используйте:
import os
try:
user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
user_paths = []
Другие советы
Вы, вероятно, тоже хотели бы этого:
import sys
print(sys.path)
Или в виде одного лайнера с терминала:
python -c "import sys; print('\n'.join(sys.path))"
Кажется, не могу отредактировать другой ответ.Имеет незначительную ошибку в том, что он доступен только для Windows.Более общим решением является использование os.sep, как показано ниже:
sys.path может включать элементы, которых нет конкретно в вашей переменной окружения PYTHONPATH.Чтобы запросить переменную напрямую, используйте:
import os
os.environ['PYTHONPATH'].split(os.pathsep)
PYTHONPATH - это переменная окружения, значением которой является список каталогов.После установки он используется Python для поиска импортированных модулей наряду с другими std.и каталоги сторонних библиотек, перечисленные в Python "sys.path".
Как и любые другие переменные среды, вы можете экспортировать их либо в shell, либо в ~/.bashrc, см. здесь.Вы можете запросить os.environ['PYTHONPATH'] для его значения в Python, как показано ниже:
$ python3 -c "import os, sys; print(os.environ['PYTHONPATH']); print(sys.path) if 'PYTHONPATH' in sorted(os.environ) else print('PYTHONPATH is not defined')"
ЕСЛИ определено в оболочке как
$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite
ЗАТЕМ результат =>
/home/Documents/DjangoTutorial/mysite
['', '/home/Documents/DjangoTutorial/mysite', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
ДРУГОЙ результат =>
PYTHONPATH is not defined
Чтобы задать PYTHONPATH для нескольких путей, см. здесь.
Обратите внимание, что можно добавить или удалить путь поиска через sys.path.insert(), del или remove() во время выполнения, но НЕ через os.environ[].Пример:
>>> os.environ['PYTHONPATH']="$HOME/Documents/DjangoTutorial/mysite"
>>> 'PYTHONPATH' in sorted(os.environ)
True
>>> sys.path // but Not there
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>> sys.path.insert(0,os.environ['PYTHONPATH'])
>>> sys.path // It's there
['$HOME/Documents/DjangoTutorial/mysite', '', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>>
Таким образом, PYTHONPATH - это один из способов указать пути поиска Python для импортированных модулей в sys.path.Вы также можете применять операции со списком непосредственно к sys.path без помощи PYTHONPATH.