/newProj/src/newProj/polls
и /firstproject/firstproject
... э-э, это выглядит честно, как источник нескольких проблем.Хорошо, несколько концепций:
Пакеты Python : Все приложения Python могут состоять из пакетов.В основном это просто каталоги, содержащие файл __init__.py
.
Как python находит пакеты : Ну, python может делать одну из двух вещей, когда ищет пакеты:
- Если текущий каталог является пакетом, то есть содержит
__init__.py
, он может импортировать из файлов в нем. - Он может выполнять поиск по пути python (
PYTHONPATH
переменная окружения или sys.path
-то же самое) и затем в подпакеты.
Как выкладываются проекты django : Проект django по умолчанию выглядит примерно так:
project_folder/
__init__.py
settings.py # config
urls.py # url config
polls/
__init__.py # makes polls a package
models.py # models
admin.py # admin
views.py # app views
forms.py # per app forms
urls.py # per app urls
В этом макете есть две возможности для вашего admin.py
, когда вы runserver
:
from models import Poll
- это работает, потому что вы остаетесь в рамках своего пакета. from polls.models import Poll
- работает, потому что polls
- это пакет и родитель, с которого вы запускаете runserver
.
Хотя это заманчиво, не используйте project_folder
какупаковка.Он сломает код, как только вы переименуете dir (например, во время развертывания).
Итак, имея в виду:
- проверьте ваши
__init__.py
файлысуществуют в нужных местах, и вы используете структуру каталогов, подобную приведенной выше.Возможно, лучше проверить и за пределами IDE - IDE могут быть ... сложными. убедитесь, что ваш путь поиска там, где вы думаете.Текущий каталог должен работать просто отлично;если это не так, вы можете увидеть, что
import sys
print sys.path
позволит вам увидеть, куда вы смотрите.Вы можете явно добавить текущий каталог, но вам это не нужно.
- Мне не нравится PyDev.Абсолютно личное предпочтение здесь, но я нахожу это тяжелой работой, сверх обычного редактора выбора + терминал + файловый браузер.Вы тоже можете, особенно если обнаружите, что структура каталогов в вашем файловом браузере радикально отличается от той, что, по вашему мнению, у вас есть в IDE.