首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django项目“配置不当:请求设置已安装应用程序”错误

Django项目“配置不当:请求设置已安装应用程序”错误
EN

Stack Overflow用户
提问于 2020-06-10 01:38:57
回答 2查看 570关注 0票数 1

我需要帮助来解决这个错误,这个错误是在我尝试用Django代码运行任何python脚本时引发的。

这是一个错误:

代码语言:javascript
复制
****PS C:\Users\pebr6\Desktop\tutorial> & c:/Users/pebr6/Desktop/pythonEnvironments/1.0/Scripts/Activate.ps1
(1.0) PS C:\Users\pebr6\Desktop\tutorial> & c:/Users/pebr6/Desktop/pythonEnvironments/1.0/Scripts/python.exe c:/Users/pebr6/Desktop/tutorial/aplicaciones/principal/models.py
Traceback (most recent call last):
  File "c:/Users/pebr6/Desktop/tutorial/aplicaciones/principal/models.py", line 5, in <module>
    class Person(models.Model):
  File "C:\Users\pebr6\Desktop\pythonEnvironments\1.0\lib\site-packages\django\db\models\base.py", line 107, in __new__
    app_config = apps.get_containing_app_config(module)
  File "C:\Users\pebr6\Desktop\pythonEnvironments\1.0\lib\site-packages\django\apps\registry.py", line 252, in get_containing_app_config
    self.check_apps_ready()
  File "C:\Users\pebr6\Desktop\pythonEnvironments\1.0\lib\site-packages\django\apps\registry.py", line 134, in check_apps_ready
    settings.INSTALLED_APPS
  File "C:\Users\pebr6\Desktop\pythonEnvironments\1.0\lib\site-packages\django\conf\__init__.py", line 76, in __getattr__
    self._setup(name)
  File "C:\Users\pebr6\Desktop\pythonEnvironments\1.0\lib\site-packages\django\conf\__init__.py", line 57, in _setup
    raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before acces**sing settings.******

我的项目结构如下:

项目结构

这是我在settings.py上的应用程序配置:

应用定义

代码语言:javascript
复制
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'aplicaciones.principal',
]

manage.py文件中有下一个代码:

代码语言:javascript
复制
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys


def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tutorial.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

最后一个是我的wsgi.py文件:

代码语言:javascript
复制
import os
import sys
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tutorial.settings')

application = get_wsgi_application()


sys.path.append('C:/Users/pebr6/Desktop/pythonEnvironments/1.0/Scripts/python.exe')

我的python版本为3.8.3,适用于64位窗口,我正在使用virtualenv创建不同的python环境。

全球环境是:

C:\Users\pebr6\AppData\Local\Programs\Python\Python38\python.exe

我只是在这里安装了虚拟主机。

我的项目的虚拟环境就在这条道路上:

c:\Users\pebr6\Desktop\pythonEnvironments\1.0\Scripts\python.exe

这里安装了django和django rest框架。

启动项目的步骤(例如)如下:

  1. 创建一个文件夹(教程作为实例)。
  2. 在教程文件夹中,我创建了另一个名为env的文件夹,在该文件夹中,我在窗口的cmd上使用Virtualenv1.0创建了一个虚拟环境。
  3. 创建之后,我将更改到该环境,并使用以下命令安装django和django rest框架: pip安装django pip安装djangorestframeworkpython -m pip安装django python -m pip安装djangorestframework
  4. 然后,在教程文件夹中,我使用以下方法创建了一个项目: django-管理入门项目教程.
  5. 之后,我用命令创建了一个应用程序: manage.py startapp main

我也试过:

django-管理startapp

python manage.py startapp主

  1. 当我打开VS代码上的教程文件夹(包含env、project和app文件夹)时,IDE要求我设置一个解释器,因此我在计算机上搜索以找到虚拟环境路径上的python.exe:

c:\Users\pebr6\Desktop\pythonEnvironments\1.0\Scripts\python.exe

因此,settings.json更改为:

"c:\Users\pebr6\Desktop\pythonEnvironments\1.0\Scripts\python.exe":“python.pythonPath”

  1. 最后,我尝试在models.py或test.py上编写一些代码,或者创建一个serializers.py并开始编码。当我运行任何脚本时,它都会引发异常。

在我将python3.8.3版本卸载为32位的64位版本之后,错误就开始发生了。我再次尝试卸载,我使用了带有全局或虚拟环境的两种版本,使用了虚拟环境,并且错误仍然在继续。

我不知道这是否重要,但这就是我的虚拟环境路径(我猜这是我的PYTHONPATH,不太确定):

皮亚普

我尝试打开manage.py外壳并运行命令:

导入sys

sys.path.append("c:\Users\pebr6\Desktop")或sys.path.append("c:\Users\pebr6\Desktop\tutorial")

但什么都没变。

我希望有人能帮助我解决这个问题,因为我在python上是新手,而且我还不懂很多东西。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-10 11:01:26

好吧,我终于能解决问题了,这是因为我写错了代码。

我有点困惑,因为在得到这个错误之前,我运行了一些代码,这些代码运行得很好。当我更改python版本(卸载所有东西等等)时,我必须启动一个新的Django项目,当我开始从我自己的类中使用models.Model作为超类时,问题就出现了,上一次我没有这样做。

我想再次做的事情是在下一个链接上:

https://www.django-rest-framework.org/api-guide/serializers/

  1. 在models.py上创建一个简单的类(例如Person)
  2. 然后为该对象创建序列化程序。
  3. 最后,在另一个文件上,导入它们并在test.py上进行测试,只创建generate类的一个实例,使用这个实例创建序列化程序,最后生成要打印的json。

但是,当我试图将Person类扩展到models.Model而不是object时,出现了一个例外,因为我正在阅读这个链接中的内容:

https://www.django-rest-framework.org/tutorial/1-serialization/

这两个教程都是正确的,但我是在某种程度上合并了彼此的代码,并得到了这个错误。

这样的错误来自于蟒蛇初学者,谢谢!

票数 0
EN

Stack Overflow用户

发布于 2020-06-10 03:33:17

您不应该运行像python models.py这样的项目脚本,要使用django,必须首先发出python manage.py

如果您想测试您的代码,应该在tests.py上编写一个测试。Django入门教程是开始学习如何在Django上进行测试的好地方。还有一个只用于测试的主题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62294526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档