Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django说-没有名为';博客';_Python_Django_Installation_Python Module - Fatal编程技术网

Python Django说-没有名为';博客';

Python Django说-没有名为';博客';,python,django,installation,python-module,Python,Django,Installation,Python Module,将我的博客应用添加到settings.py的INSTALLED_APPS部分时,我收到“ModuleNotFoundError:没有名为'blog'的模块”错误。我已经确定这与我在已安装的应用程序下添加“博客”应用程序的方式有关。当我从已安装的应用程序中删除“blog”引用时,错误就会消失。看起来,Django无法找到我的博客应用程序的目录 我做了一件不同的事情,那就是使用: python manage.py startapp blog /myproject 这里的区别是指定/myprojec

将我的博客应用添加到
settings.py的INSTALLED_APPS部分时,我收到
“ModuleNotFoundError:没有名为'blog'的模块”
错误。我已经确定这与我在已安装的应用程序下添加“博客”应用程序的方式有关。当我从
已安装的应用程序中删除“blog”引用时,错误就会消失。看起来,
Django
无法找到我的博客应用程序的目录

我做了一件不同的事情,那就是使用:

python manage.py startapp blog /myproject
这里的区别是指定
/myproject
目录而不使用:

python manage.py startapp blog
这将把它放在根目录下
myproject
。我想避免在根文件夹中添加应用程序目录,这样我会更有条理。但看起来Django不喜欢这个,或者我在
已安装的应用程序
部分没有正确引用这个

我的项目目录如下:

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中
我已经设置了我的应用程序
博客

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

目录结构是不寻常的。更常见的是,与您的应用程序命名为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

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


您可以将
/myproject/myproject
添加到
PYTHONPATH
,这样您就可以导入
blog
,但我不建议这样做我通常会将配置路径添加到已安装的应用程序中以避免此问题。因此,已安装的应用程序如下所示:

NSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog,apps.BlogConfig',

因为你的应用程序在
my_project
模块中,我认为你应该在
INSTALLED_APPS
中编写
my_project.blog
,而不是简单的
blog
。谢谢你修复了它。如果它在管理部分正常工作,我也会遇到同样的问题,但在我添加我的_project\u名称时会遇到问题。blog没有任何问题与Vincent达成一致,使用
my_project.blog
成功了。必须记住,这将根据
manage.py
所在的位置工作。感谢您解决了这个问题,所以这里的教训是,如果使用非标准Django结构将包括应用程序的完整路径,我不会说您的目录结构不寻常。如果可以从shell运行
import my_app
,则可以将其作为应用程序包含,这是正确的方法。模块和站点文件夹必须粘在一起