В Python есть случаи, когда импорт с * ничего не даст. В вашем примере, если tuttobelo.management.models является пакетом (то есть каталогом с __init__.py
) с файлами Preferences.py, ProductVariant.py и т. Д., Импорт со звездочкой не будет работать, если вы уже не импортировали это явно где-то еще.
Это можно решить, введя __init__.py
:
__all__ = ['Preferences', 'ProductVariant', 'UserSeller', <etc...> ]
Это позволит снова выполнить импорт *, но, как уже было отмечено, это ужасный стиль кодирования по нескольким причинам. Во-первых, перестают работать такие инструменты, как pyflakes и pylint, а также самоанализ кода в вашем редакторе. Во-вторых, вы заканчиваете тем, что помещаете много имен в локальное пространство имен, а в своем коде вы не знаете, откуда они берутся, а во-вторых, вы можете столкнуться с такими именами.
Лучше сделать
from tuttobelo.management import models
А затем обратитесь к другим вещам по моделям. Предпочтения, модели. Вариант продукта и т. Д. Однако это не будет работать с переменной __all__
. Вместо этого вам нужно импортировать модули из __init__.py
:
import Preferences, ProductVariant, UserSeller, ProductOwner, <etc...>
Недостатком этого является то, что все модули импортируются, даже если вы их не используете, что означает, что для этого потребуется больше памяти.