2017-01-27 3 views
2

У меня есть структура пакета, который выглядит как этотЕсть ли способ импортировать модули python для всего пакета?

├── Plugins 
│   ├── Eight_Ball.py 
│   ├── Ping.py 
│   ├── Weather.py 
│   ├── __init__.py 

Каждый .py файл внутри пакета необходимо импортировать несколько модулей из других в проекте. Я предпочел бы каждый файл в пакете не начать с

from ..Utils.constants import Plugin_Type 
from ..Models.Plugin import Plugin 
from ..Models.Singleton import Singleton 

так есть способ иметь файлы в Plugins пакете имеет тот импорт по умолчанию?

+0

Возможный дубликат? http://stackoverflow.com/questions/1350887/python-is-there-a-place-when-i-can-put-default-imports-for-all-my-modules –

+0

Не существует приемлемого способа. Обычно не рекомендуется скрывать зависимости. – wim

+0

@wim Я уже импортирую 'Plugin_Type' в' Plugin'. Было бы нормально 'from ..Models.Plugin import Plugin, Plugin_Type' ' from ..Models.Singleton import Singleton' вместо этого? – TWOF

ответ

1

Короче говоря, нет, нет способа импортировать файлы по умолчанию в пакет Plugins.

Хотя, как правило, не рекомендуется использовать from module import *, если вы действительно хотите, чтобы сохранить эти несколько дополнительных линий вы могли бы сделать общий файл импорта, который импортирует все, что вам нужно, как это:

common_imports.py:

from ..Utils.constants import Plugin_Type 
    from ..Models.Plugin import Plugin 
    from ..Models.Singleton import Singleton 

other_files.py:

from .common_imports import * 

Опять же, с помощью from module import * является обескуражить d, и я бы рекомендовал вам просто включить эти несколько строк в начале каждого файла.