Это либо то, что @Skirmantas предложил, что app_name
не на PYTHONPATH
, либо у вас есть конфликт пакетов, где какой-то другой app_name
предшествует вашему app_name
на PYTHONPATH
.
Я догадываюсь, что, вероятно, последнее, что у вас есть приложение с тем же именем пакета, что и у другого стороннего приложения, которое вы используете;Однажды у меня было два пакета registration
верхнего уровня в моем PYTHONPATH
.
Если вы возьмете мою неудачу с приложением registration
в качестве примера, вы обычно упаковываете свой проект примерно так:
myproject/
myproject/
registration/
__init__.py
models.py
__init__.py
settings.py
urls.py
setup.py
Это рекомендация сообщества о том, что приложения должны быть упакованы так, чтобы они были совместимы по принципу "включай и работай".Они должны быть пакетом верхнего уровня и иметь возможность ссылаться на ресурсы внутри пакета по абсолютному пути, как предложил @Yuji.Если вам нравится отправлять и упаковывать свои приложения вместе с вашим проектом, это означает, что в дополнение к /myproject
, /myproject/myproject
также будет на PYTHONPATH
.Это даже применяется в некоторых случаях .
Как я уже сказал, это всего лишь догадка, что у вас есть конфликтующие имена пакетов.Если это так, то после этого многословного поста вы должны понимать, что единственный вариант, который у вас есть, - переименовать ваш пакет во что-то более уникальное, но у меня никогда не хватит духу, чтобы сразу же выпустить его кому-нибудь.Из-за печальной правды я никогда не нашел более подходящего названия для замены registration
.