Поиск пути в Python

Я бы предположил, что на этот вопрос уже был дан ответ, но я не смог найти ветку, в которой точно описывается процесс поиска. Извините, если я ошибаюсь. я

Каков точно процесс поиска Python для нахождения модуля? Какие пути рассматриваются и в каком порядке? (например, определения sys.path и PYTHONPATH, site-packages и т. д.)

Ниже я скопировал информацию из приведенной ссылки. в комментариях следующее, но у меня есть следующие вопросы:

  • Что такое installation-dependent по умолчанию?
  • Что произойдет, если у вас активирована виртуальная среда от virtualenv или от conda?

Когда импортируется модуль с именем spam, интерпретатор сначала ищет встроенный модуль с таким именем. Если он не найден, он ищет файл с именем spam.py в списке каталогов, заданном переменной sys.path. sys.path инициализируется из этих мест:

  • Каталог, содержащий входной скрипт (или текущий каталог).
  • PYTHONPATH (список имен каталогов с тем же синтаксисом, что и переменная оболочки PATH).
  • Значение по умолчанию, зависящее от установки.

После инициализации программы Python могут изменять sys.path. Каталог, содержащий выполняемый скрипт, помещается в начало пути поиска перед стандартным путем библиотеки. Это означает, что скрипты в этом каталоге будут загружены вместо одноименных модулей в каталоге библиотеки. Это ошибка, если замена не предназначена. Дополнительную информацию см. в разделе Стандартные модули.


person Josh    schedule 16.09.2014    source источник
comment
Из этого вопроса я нашел эту ссылку, которая может вам помочь.   -  person Celeo    schedule 16.09.2014
comment
Спасибо @Celeo, я обновил ОП.   -  person Josh    schedule 16.09.2014
comment
Несколько лет назад было хорошее видео о том, как работает импорт из pycon.   -  person Silfheed    schedule 16.09.2014


Ответы (2)


Ответ, который вы ищете, находится здесь: https://docs.python.org/2/tutorial/modules.html в разделе 6.1.2.

Судя по сайту это

the directory containing the input script (or the current directory).
PYTHONPATH (a list of directory names, with the same syntax as the shell variable PATH).
the installation-dependent default.
person Donkyhotay    schedule 16.09.2014
comment
Спасибо @Donkyhotay +1. Я обновил ОП этой информацией и вопросами, основанными на этом ответе. - person Josh; 16.09.2014

Я считаю, что документы, которые вы ищете, это https://docs.python.org/2/library/site.html. Обратите внимание, что еще две вещи, на которые следует обратить внимание, — это .pth файлы и каталоги пользовательских сайтов (~/.local/lib/python2.7).

Я не знаю, как работает virtualenv. Среды Conda следует рассматривать как независимые установки Python, поэтому они имеют свои собственные независимые каталоги lib/python2.7 и lib/python2.7/site-packages. Однако такие вещи, как PYTHONPATH, PYTHONHOME и ~/.local/lib/python2.7, являются глобальными, поэтому все среды conda будут их использовать (поэтому я лично не рекомендую их использовать, если вы действительно не знаете, что делаете).

person asmeurer    schedule 17.09.2014