как инициализировать системную переменную пути в проектах Python - PullRequest
0 голосов
/ 07 марта 2012

в проектах Существует так много каталогов, и я хочу, чтобы каждый .py файл в отдельном каталоге правильно импортировал другой файл.

Я попробовал это

PREFIX = normpath(dirname(dirname(dirname(abspath(__file__)))))
if PREFIX not in sys.path:
    sys.path = [PREFIX] + sys.path

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

есть лучший способ решить его лучше (кроме способа экспорта пути проекта впуть глобальной системы)?

Ответы [ 2 ]

0 голосов
/ 07 марта 2012

Оператор import включает поддержку packages - файлов (модулей), расположенных в каталогах с маркерами __init__.py.

Поддержка относительной иерархии пакетов (с использованием начальных точек)предоставляется, поэтому абсолютная ссылка на модуль не требуется.

При указании, какой модуль импортировать , указывать абсолютное имя модуля не требуется.Когда модуль или пакет содержится в другом пакете, можно сделать относительный импорт в том же самом верхнем пакете, не упоминая имя пакета. Используя начальные точки в указанном модуле или пакете после, вы можете указать, как высоко пройти по текущей иерархии пакетов без указания точных имен .Одна начальная точка означает текущий пакет, в котором существует модуль, выполняющий импорт.Две точки означают один уровень пакета.Три точки выше двух уровней и т. Д. Поэтому, если вы выполните from . import mod из модуля в пакете pkg, то в итоге вы импортируете pkg.mod.Если вы выполните from ..subpkg2 import mod из pkg.subpkg1, вы импортируете pkg.subpkg2.mod.Спецификация для относительного импорта содержится в PEP 328 .

. Вы можете упорядочить проекты как подпакеты и использовать относительный импорт, аналогичный from ..subpkg2 import mod, для использования переменных из mod в subpkg2 (из любого другого подпакета того же уровня).

0 голосов
/ 07 марта 2012

вы можете использовать модули Python и импортировать их следующим образом:

import MyModule.MySubModule.myclass

ex:

from pixie.libs.setup import Setup

папки:

/
|-pixie
   |- __init__.py
   |- libs
     |- __init__.py
     |- setup.py
   |- models

Как: https://github.com/masom/Puck/blob/master/client/pixie/controllers/configuration.py#L2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...