将我的博客应用添加到"ModuleNotFoundError: No module named 'blog'"
的INSTALLED_APPS部分时,出现settings.py
错误。我已经确定它与我添加"博客"的方式有关。 INSTALLED_APPS下的应用程序。当我删除'博客'来自INSTALLED_APPS
错误的引用消失了。看起来Django
无法找到我的博客应用程序的目录?
我做了一件不同的事情就是使用:
python manage.py startapp blog /myproject
这里的区别是指定/myproject
目录而不使用:
python manage.py startapp blog
将它放在根目录myproject
下。我想避免在根文件夹中添加app目录,这样我就能更有条理。但看起来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
在我的settings.py
内,我设置了我的应用blog
:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
答案 0 :(得分:4)
Django需要能够导入您的应用程序,通常这意味着包括相对于根目录'myproject.blog'
的完整路径。
您可以将<full_path_to_your_project>/myproject/myproject
添加到PYTHONPATH
,以便导入blog
,但我不建议
答案 1 :(得分:3)
目录结构不常见。更常见的是,将您的应用程序命名为博客的那个将是
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
答案 2 :(得分:0)
我通常将配置路径添加到已安装的应用程序中,以避免出现此问题。因此,已安装的应用程序将如下所示:
NSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog,apps.BlogConfig',