У меня есть каталог, полный скриптов (скажем project/bin
). У меня также есть библиотека, расположенная в project/lib
и хочу, чтобы скрипты автоматически загружали ее. Это то, что я обычно использую в верхней части каждого скрипта:Python: Лучший способ добавить к sys.path относительно текущего скрипта запуска
#!/usr/bin/python
from os.path import dirname, realpath, sep, pardir
import sys
sys.path.append(dirname(realpath(__file__)) + sep + pardir + sep + "lib")
# ... now the real code
import mylib
Это своего рода громоздким, некрасиво, и должен быть вставлен в начале каждого файла. Есть лучший способ сделать это?
На самом деле то, что я надеюсь на что-то так гладко, как это:
#!/usr/bin/python
import sys.path
from os.path import pardir, sep
sys.path.append_relative(pardir + sep + "lib")
import mylib
Или еще лучше, то, что бы не сломаться, когда мой редактор (или кто-то другой, кто имеет доступ для фиксации) решает изменить порядок импорт как часть процесса очистки до:
#!/usr/bin/python --relpath_append ../lib
import mylib
это не порт непосредственно к не Posix платформы, но это будет держать вещи в чистоте.
Смотрите также: http://stackoverflow.com/questions/2349991/python-how-to-import-other-python-files/20749411#20749411 – dreftymac