python - Django 项目“配置不当:请求的设置安装应用程序”错误
问题描述
当我尝试使用 Django 代码运行任何 python 脚本时,我需要帮助来解决这个错误。
这是错误:
****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 上的应用程序配置:
应用程序定义
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 文件里面有下面的代码:
#!/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 文件:
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')
对于 64 位 Windows,我的 python 版本是 3.8.3,我正在使用 virtualenv 创建不同的 python 环境。
全局环境开启:
C:\Users\pebr6\AppData\Local\Programs\Python\Python38\python.exe
我只是在这里安装了 virtualenv。
我的项目的虚拟环境在路径上:
c:\Users\pebr6\Desktop\pythonEnvironments\1.0\Scripts\python.exe
我在这里安装了 django 和 django rest 框架。
我启动项目的步骤(例如)是:
创建一个文件夹(教程作为实例)。
在教程文件夹中,我创建了另一个名为 env 的文件夹,在这里我在 windows 的 cmd 上使用virtualenv 1.0创建了一个虚拟环境。
创建完成后,我更改为该环境并使用以下命令安装 django 和 django rest 框架:
点安装django
pip install djangorestframework
或者
python -m pip install django
python -m pip install djangorestframework
然后,在教程文件夹中,我也使用以下方法创建了一个项目:
django-admin startproject 教程。
在此之后,我使用命令创建了一个应用程序:
manage.py startapp 主程序
我也试过:
django-admin startapp main
或者
python manage.py startapp main
- 当我在 VS Code 上打开教程文件夹(包含 env、project 和 app 文件夹)时,IDE 要求我设置解释器,因此我在计算机上搜索以在我的虚拟环境路径中找到 python.exe:
c:\Users\pebr6\Desktop\pythonEnvironments\1.0\Scripts\python.exe
因此 settings.json 更改为:
“python.pythonPath”:“c:\Users\pebr6\Desktop\pythonEnvironments\1.0\Scripts\python.exe”
- 最后我尝试在models.py或test.py上写一些代码,或者创建一个serializers.py并开始编码。当我运行任何脚本时,它会引发异常。
在我通过 64 位版本卸载 32 位的 python 3.8.3 版本后,错误开始发生。我再次尝试全部卸载,我已经使用 virtualenv 将两个版本与全局或虚拟环境一起使用,并且错误仍然存在。
我不知道这是否重要,但这就是我在虚拟环境路径上的内容(我猜是我的 PYTHONPATH,不太确定):
我试图打开 manage.py shell 并运行以下命令:
导入系统
sys.path.append("c:\Users\pebr6\Desktop") 或 sys.path.append("c:\Users\pebr6\Desktop\tutorial")
但没有任何改变。
我希望有人可以帮助我解决这个问题,因为我是 python 新手,但我还不了解很多东西。谢谢!
解决方案
您不应该运行您的项目脚本python models.py
,如要使用 django,您必须先发出python manage.py
。
如果你想测试你的代码,你应该在tests.py
. Django 的入门教程是开始学习如何在 Django 上进行测试的好地方。还有一个主题仅用于测试。
推荐阅读
- python - 使用 DGL grahSAGE 对 GNN 结果的再现性
- php - 一个preg_match()中的正负正则表达式?
- spring-boot - 手动 Spring Security 登录的集成测试
- elasticsearch - 弹性搜索的开放发行版
- javascript - 为什么当我放入我的画布标签时我的部分元素没有显示?
- python - Django collectstatic 无法按预期工作
- spring-boot - Spring Boot OAuth2 基于角色的授权实现
- regex - 正则表达式模式匹配字符串,如:+500-+600
- bash - BashScript - Sudo 作为用户,进入某个文件夹并运行命令
- java - WebServerException:无法启动嵌入式 Tomcat