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

Установить pythonpath перед операциями импорта

Мой код:

import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

но scriptlib находится в другом каталоге, поэтому мне придется включить этот каталог в переменную окружения "PYTHONPATH".

В любом случае я могу добавить каталог scriptlib в переменную среды "PYTHONPATH" перед выполнением оператора импорта, например:

import sys
sys.path.append('/mypath/scriptlib')
import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations

Если это так, это значение только для этой командной строки или глобально?

Заранее спасибо

4b9b3361

Ответ 1

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

set.py:

import sys
sys.path.append("/tmp/TEST")

loop.py

import sys
import time
while True:
  print sys.path
  time.sleep(1)

run: python loop.py &

Это запустит loop.py, подключенный к вашему STDOUT, и он будет продолжать работать в фоновом режиме. Затем вы можете запустить python set.py. Каждый из них имеет другой набор переменных окружения. Обратите внимание, что вывод из loop.py не изменяется, поскольку set.py не изменяет среду loop.py.

Заметка об импорте

Импорт Python динамичен, как и весь остальной язык. Статическая связь не происходит. Импорт - это исполняемая строка, как sys.path.append....

Ответ 2

Как также отмечено в документах здесь.
Перейдите к Python X.X/Lib и добавьте эти строки в site.py там,

import sys
sys.path.append("yourpathstring")

Это изменяет ваш sys.path так, чтобы при каждой загрузке он имел это значение в нем.

Как указано здесь о site.py,

Этот модуль автоматически импортируется во время инициализации. Импорт этого модуля добавит пути к конкретному сайту в путь поиска модуля и добавит несколько встроенных компонентов.

Для других возможных способов добавления некоторого пути к sys.path см. эти документы