【问题标题】:Django ImportError: No module named 'app'Django ImportError:没有名为“app”的模块
【发布时间】:2015-07-20 05:49:15
【问题描述】:

我现在一直在使用django 1.3。但是想从最新版本的1.8.1python3.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',
)

在运行服务器上出现以下错误

$ 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'

【问题讨论】:

  • @dhke - 我刚刚创建了python manage.py startproject myapp。我不认为这是错误的。在它成功之前我已经尝试过了。
  • 我只是想重新表述评论,对此感到抱歉;-)。我拥有的所有 django 项目,在顶级项目目录中都有 manage.py,我也很确定这是 django 应用程序搜索路径的根源。所以在你的情况下,common 从 django 的角度来看实际上是myapp.common。但是,不知道为什么以前会这样。
  • @dheke- 你的建议是正确的。你能把它作为答案吗?感谢您的努力

标签: python-3.4 django-1.8


【解决方案1】:

manage.py 的路径对我来说看起来很不寻常。 manage.py 通常位于顶层项目目录中。您遇到的问题源于 django 将搜索路径(即sys.path)植根于manage.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中的项目

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-21
    • 2014-05-07
    • 1970-01-01
    • 2021-01-28
    • 2020-09-07
    • 2018-02-05
    • 2018-07-28
    • 2023-03-27
    相关资源
    最近更新 更多