2015-05-09 3 views
0

Я уже использовал django 1.3. Но хотелось начать с последней версии 1.8.1 с python3.4 Я начал с проекта. Вот моя структура каталогов: НастройкиDjango ImportError: Нет модуля с именем 'app'

├── myapp 
│   ├── common 
│   │   ├── admin.py 
│   │   ├── __init__.py 
│   │   ├── migrations 
│   │   │   └── __init__.py 
│   │   ├── models.py 
│   │   ├── tests.py 
│   │   └── views.py 
│   ├── __init__.py 
│   ├── __pycache__ 
│   ├── settings.py 
│   ├── templates 
│   │   └── home.html 
│   ├── urls.py 
│   └── wsgi.py 
└── manage.py 

* urls.py

from django.conf.urls import include, url 
from django.contrib import admin 
from . import views 
urlpatterns = [ 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^$', "home", name='homepage'), 
] 

views.py

from django.shortcuts import render 
def home(request): 
    render(request, "home.html", {"text":"Hello World!!!"}) 

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'common', 
) 

Получение следующие ошибки на runserver

$ python manage.py runserver 
Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/local/lib/python3.4/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line 
    utility.execute() 
    File "/usr/local/lib/python3.4/site-packages/django/core/management/__init__.py", line 312, in execute 
    django.setup() 
    File "/usr/local/lib/python3.4/site-packages/django/__init__.py", line 18, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/usr/local/lib/python3.4/site-packages/django/apps/registry.py", line 85, in populate 
    app_config = AppConfig.create(entry) 
    File "/usr/local/lib/python3.4/site-packages/django/apps/config.py", line 86, in create 
    module = import_module(entry) 
    File "/usr/local/lib/python3.4/importlib/__init__.py", line 109, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 2254, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlocked 
ImportError: No module named 'common' 
+0

@dhke - Я только что создал 'питон manage.py startproject myapp'. Я не думаю, что это неправильно. Я пробовал это, прежде чем он работал с успехом. – trex

+1

Я просто пытался переформулировать комментарий, извините за это ;-). Все проекты django, которые у меня есть, имеют 'manage.py' в каталоге проектов верхнего уровня, и я также уверен, что django корни путь поиска приложения. Таким образом, в вашем случае 'common' на самом деле находится на' myapp.common' с точки зрения django. Однако не знаю, почему это сработало раньше. – dhke

+0

@ dheke- Ваше предложение было правильным. не могли бы вы сделать это как ответ. Спасибо за усилия – trex

ответ

1

Путь managed.py выглядит необычно для меня. managed.py обычно находится в каталоге проекта верхнего уровня. Проблема, с которой вы сталкиваетесь, связана с тем, что django корни путь поиска (то есть sys.path) по пути сценария managed.py.

В вашем случае относительный путь модуля common фактически равен myapp.common.

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'myapp.common', 
) 

Конечно myapp тогда на самом деле проект в Джанго жаргон ...

Смежные вопросы