2013-07-02 7 views
0

Django продолжает рассказывать мне об этом, даже после перекодировки всего, и я не могу найти помощь в Google. Папка проекта выглядит следующим образом:Django - ImportError: нет модуля с именем city

$ tree 
. 
|-- project 
| |-- __init__.py 
| |-- __init__.pyc 
| |-- settings.py 
| |-- settings.py~ 
| |-- settings.pyc 
| |-- urls.py 
| |-- urls.pyc 
| |-- wsgi.py 
| `-- wsgi.pyc 
|-- city 
| |-- __init__.py 
| |-- __init__.pyc 
| |-- models.py 
| |-- models.pyc 
| |-- tests.py 
| `-- views.py 
|-- course 
| |-- __init__.py 
| |-- __init__.pyc 
| |-- models.py 
| |-- models.pyc 
| |-- tests.py 
| `-- views.py 
|-- manage.py 
|-- perk 
| |-- __init__.py 
| |-- __init__.pyc 
| |-- models.py 
| |-- models.pyc 
| |-- static 
| |-- tests.py 
| `-- views.py 
|-- preuniversity 
| |-- __init__.py 
| |-- __init__.pyc 
| |-- models.py 
| |-- models.py~ 
| |-- models.pyc 
| |-- tests.py 
| `-- views.py 
`-- user 
    |-- __init__.py 
    |-- __init__.pyc 
    |-- models.py 
    |-- models.py~ 
    |-- models.pyc 
    |-- tests.py 
    `-- views.py 

структура не была изменена, ни я ничего изменять для models.py за исключением, что:

$ cat city/models.py 
from django.db import models 

class State(models.Model): 
    acronym = models.CharField(max_length=2) 
    name = models.CharField(max_length=32) 

class City(models.Model): 
    name = models.CharField(max_length=32) 
    state = models.ForeignKey(State) 

Я только после Джанго учебника, нет больше и не меньше, и нет решения. Я использовал startapp для каждого приложения (и не только скопировал & пасту с другого), а имена приложений находятся в settings.py.

Если я удаляю каждую ссылку на город (внешние ключи, импорт и удаление из установленных_apps), он жалуется на следующее приложение (курс).

+0

Ваш «город», скорее всего, не находится на пути. Можете ли вы показать свой файл 'manage.py'? В качестве альтернативы переместите 'city' в папку' project' (при условии, что 'projects /' находится в пути) – karthikr

+0

В каком модуле вы импортируете город/models.py. Это в ваших представлениях – user1050619

+0

@karthikr Я не уверен если это помогает, manage.py по умолчанию, но в любом случае: http://pastebin.com/P6pakAB7 – ranisalt

ответ

0

Поместите свой город (файлы, которые вы хотите импортировать) в корневой каталог основного приложения. Если IDE (PyCharm для примера) не беспокоится об импорте этого модуля - проблема была в путях.

Я столкнулся с этой проблемой сразу. И проблемы были.

+0

Я не использую IDE, я работаю только с терминалом и gedit. Городский каталог уже находится в корневом каталоге (каталог с manage.py?) – ranisalt

1

Я предполагаю, что вы используете django 1.4 или новее из-за того, что находится в папке вашего проекта.

Создал ли каталог верхнего уровня django-admin.py startproject? Я не вижу файл __init__.py на верхнем уровне, хотя есть каталог project с settings.py и urls.py. Создайте пустой файл с именем __init__.py на верхнем уровне (родной брат manage.py) и посмотрите, поможет ли это.

+0

Да, я сделал, и нет, это ничего не изменило. – ranisalt

+0

Пожалуйста, покажите свои settings.py. Кроме того, вы используете django с сервером разработки (runerver) или с веб-сервером, например apache? –

+0

Не нужно, действительно. Мне удалось исправить это и скоро ответит. – ranisalt

0

Так что мне удалось исправить ошибки. Возможно, я забыл важную информацию по этому вопросу, но вот объяснение:

Я загрузил PyDev для Eclipse и перестроил проект с нуля. Итак, когда я писал импорт, Eclipse жаловался, что это неправильно. Ну, я вернулся в учебник Django, и есть import city, поэтому я был прав. Я принял предложение от Eclipse, и он изменился на from city.models import City, и все прошло нормально. Поэтому я тестировал старый проект и менял каждый импорт, и он проверял и синхронизировал без ошибок.

Теперь я очень смущен, как документация Django может быть неправильной? Или это Python-версия или особенность дистрибутива? Ну, неважно, сейчас он работает. Спасибо всем: P