Django ImportError:没有名为' app'

时间:2015-05-09 10:08:30

标签: python-3.4 django-1.8

我现在一直在使用django 1.3。但是想从最新版1.8.1开始python3.4我已经开始了这个项目。 这是我的目录结构:

├── 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'

1 个答案:

答案 0 :(得分: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实际上是django lingo中的项目 ...