Сохранить выполнение в TLD
В общем, старайтесь поддерживать время выполнения на верхнем уровне. Это значительно улучшит ваш импорт.
Если вам приходится много заниматься импортом с относительным импортом, возможно, есть
лучший способ.
Изменение пути
Другие авторы упоминали PYTHONPATH
. Это отличный способ сделать это навсегда в вашей оболочке.
Если вы не хотите / не можете напрямую манипулировать путем к проекту PYTHONPATH
, вы можете использовать sys.path
, чтобы вырваться из относительного ада импорта.
Использование sys.path.append
sys.path
это просто внутренний список. Вы можете добавить к нему, чтобы добавить материал на ваш путь.
Скажите, что я в /bin
и есть библиотека markdown
в lib/
. Вы можете добавить относительные пути с помощью sys.path
, чтобы импортировать то, что вы хотите.
import sys
sys.path.append('../lib')
import markdown
print markdown.markdown("""
Hello world!
------------
""")
Слово мудрому: Не сходите с ума от ваших дополнений sys.path. Держите вашу схему простой, чтобы избежать путаницы.
Чрезмерно активный импорт может иногда приводить к случаям, когда модуль python должен импортировать сам себя, и в этот момент выполнение останавливается!
Использование пакетов и __init__.py
Еще один замечательный трюк - создание пакетов Python путем добавления файлов __init__.py
. __init__.py
загружается раньше любых других модулей в каталоге, так что это отличный способ добавить импорт по всему каталогу. Это делает его идеальным местом для добавления sys.path
хакерских атак.
Вам даже не нужно обязательно что-либо добавлять в файл. Достаточно просто сделать touch __init__.py
на консоли, чтобы сделать каталог пакетом.
См. Этот пост SO для более конкретного примера.