Django说-没有名为'blog'的模块

Ner*_*kic 4 python django installation python-module

"ModuleNotFoundError: No module named 'blog'"将我的博客应用添加到的INSTALLED_APPS部分时出现错误settings.py。我确定这与我在INSTALLED_APPS下添加“博客”应用程序的方式有关。当我从INSTALLED_APPS错误中删除“博客”引用时,该引用就会消失。似乎Django无法找到我的博客应用程序的目录?

我做了另一件事,那就是使用:

python manage.py startapp blog /myproject
Run Code Online (Sandbox Code Playgroud)

此处的区别是指定/myproject目录,而不使用:

python manage.py startapp blog
Run Code Online (Sandbox Code Playgroud)

它将放置在根目录下myproject。我想避免在根文件夹中添加应用程序目录,以便保持井井有条。但是看起来Django不喜欢这个,或者我在本INSTALLED_APPS节中没有正确引用这个?

我的项目目录如下:

myproject/
??? myproject
?   ??? __init__.py
?   ??? __pycache__
?   ?   ??? __init__.cpython-36.pyc
?   ?   ??? settings.cpython-36.pyc
?   ?   ??? urls.cpython-36.pyc
?   ?   ??? wsgi.cpython-36.pyc
?   ??? blog
?   ?   ??? __init__.py
?   ?   ??? admin.py
?   ?   ??? apps.py
?   ?   ??? migrations
?   ?   ?   ??? __init__.py
?   ?   ??? models.py
?   ?   ??? tests.py
?   ?   ??? views.py
?   ??? settings.py
?   ??? urls.py
?   ??? wsgi.py
??? db.sqlite3
??? manage.py
Run Code Online (Sandbox Code Playgroud)

在我里面,我settings.py已经设置了我的应用程序blog

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]
Run Code Online (Sandbox Code Playgroud)

e4c*_*4c5 7

目录结构异常。更常见的是,与您的应用匹配的名称为Blog的是

myproject/
??? myproject
?   ??? __init__.py
?   ??? __pycache__
?   ?   ??? __init__.cpython-36.pyc
?   ?   ??? settings.cpython-36.pyc
?   ?   ??? urls.cpython-36.pyc
?   ?   ??? wsgi.cpython-36.pyc
??? blog
?   ??? __init__.py
?   ??? admin.py
?   ??? apps.py
?   ??? migrations
?   ?   ??? __init__.py
?   ??? models.py
?   ??? tests.py
?   ??? views.py
?   ??? settings.py
?   ??? urls.py
?   ??? wsgi.py
??? db.sqlite3
??? manage.py
Run Code Online (Sandbox Code Playgroud)


Iai*_*ton 7

Django需要能够导入您的应用程序,通常这意味着包括相对于根目录的完整路径'myproject.blog'

你可以添加<full_path_to_your_project>/myproject/myprojectPYTHONPATH,让你可以导入blog,但我不会推荐它