Это довольно специфическая структура каталогов, и, безусловно, есть способ ее исправить, но в целом рекомендуется следовать общей настройке.
Для всех известных мне django проектов это каталог с файлом manage.py, который является верхним уровнем проекта и который должен находиться в пути python, и поэтому не содержит __init__.py
. обычно вы должны импортировать
KnownLocation
, landingpage
, threelocationstrian
и triangulationapi.settings
вместо: triangulationapi.KnownLocation
, triangulationapi.landingpage
, triangulationapi.threelocationstrian
и triangulationapi.triangulationapi.settings
Вы можете проверить и поделиться строками, которые находятся в triangulationapi / triangulationapi / settings.py, и объявить INSTALLED_APPS. В частности, меня интересует, содержит ли INSTALLED_APPS KnownLocation
, landingpage
, threelocationstrian
или содержит triangulationapi.KnownLocation
, triangulationapi.landingpage
, triangulationapi.threelocationstrian
Не могли бы вы уточнить, что вы имеете в виду под «Верхняя папка (выше Project_level) помечена как источники root. ' Вы используете IDE? Если да, то какой. Вы также можете попробовать прямо из командной строки без какой-либо модной IDE? и введите именно те команды, которые вы вводите, и укажите каталог, в котором вы находитесь.
Обработка ваших последних ответов:
Забавно, что на вашем старом компьютере все работает, по моему мнению на этом компьютере были установлены некоторые переменные env.
Если у вас все еще есть доступ к этому старому компьютеру: перейдите на triangulationapi
и наберите echo "$PYTHONPATH"
, чтобы увидеть, было ли что-то установлено.
Если вы просто хочу, чтобы все работало на вашей новой машине, тогда я бы предложил импортировать в ваш код только из Project_Level
и , а не из triangulationapi.Project_Level
Дополнительно перенесите либо Project_Level
в каталог triangulationapi
(рядом с manage.py
) или в качестве альтернативы установите переменную среды PYTHONPATH
в родительский каталог Project_Level
dir.
Общий комментарий: В общем случае это возникновение проблем с помещением файла __init__.py
в каталог, из которого вы выполняете команды (например, manage.py
), особенно если родительский каталог был добавлен в путь python и если дочерний каталог имеет то же имя, что и каталог, в котором вы находитесь. В зависимости от порядка импорта python может действительно потеряться.
В качестве общей рекомендации по отладке: вы можете добавить (непосредственно перед строкой, которая не может выполнить импорт) следующий фрагмент. Это может пролить свет на эту проблему.
import sys
print("PATH:\n", "\n".join(sys.path))
for mod, modinfo in sorted(sys.modules.items()):
print(mod, modinfo)
, в частности, обратите внимание на строки, содержащие triangulationapi