django.setup(): ModuleNotFoundError: 设置 DJANGO_SETTINGS_MODULE 时没有名为“api.apps”的模块

Posted

技术标签:

【中文标题】django.setup(): ModuleNotFoundError: 设置 DJANGO_SETTINGS_MODULE 时没有名为“api.apps”的模块【英文标题】:django.setup(): ModuleNotFoundError: No module named 'api.apps' when DJANGO_SETTINGS_MODULE is set 【发布时间】:2022-01-06 12:58:41 【问题描述】:

我正在尝试从外部 Python 脚本向 Django 数据库添加条目,但在尝试导入我的 Django 模型时遇到了错误。 我对数据库和单个 Python 脚本都使用 venv

我使用以下链接:django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured 在导入我的模型之前尝试设置 Django,但现在我遇到了以下错误: ModuleNotFoundError:没有名为“api.apps”的模块

我还将 Python 路径设置在我的项目目录的顶部,位于我的数据库和 Python 脚本之上。

我尝试创建的 Python 文件与我的数据库位于不同的文件夹中,代码如下: (请注意,我的 Django 数据库名称是 database,也是主要部分。我将“api”作为单独的目录。)

import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.database.database.settings')

import django
django.setup()

from database.api.models import Example

这在 django.setup() 上失败。我已经用“from database.database.wsgi import *”做了一个替代尝试,导致同样的错误。

我不确定是什么原因造成的,因为当我运行数据库时,“api”中的模型看起来很好,我确实将 api 添加到“INSTALLED_APPS”。

这是我的 database.settings.py 中的 INSTALLED_APPS:

INSTALLED_APPS = [
    'api.apps.ApiConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
]

“api.apps”是我项目中的一个基本文件,除了默认行为之外,我对它没有做太多的事情。

什么仍然会导致 API.apps 出现 ModuleNotFoundError?

【问题讨论】:

放下api.apps.ApiConfig @sarangkkl 你能澄清一下在哪里放置 api.apps.ApiConfig 吗?如果您的意思是在 INSTALLED_APPS 中,它已经存在。或者你的意思是 Python 脚本中的某个地方? 【参考方案1】:
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'api.apps.ApiConfig',
    'rest_framework',
]

抱歉重播晚了,但这就是我要说的,您需要将创建的应用程序放在静态文件之后,记住始终使用解释性编程语言中的 python

【讨论】:

如果不起作用,可能是您的应用名称有问题,所以最好的办法是分享您的文件层次结构 您可以通过 sarangkkl@hotmail.com 直接与我联系 啊,我明白了!知道这对未来很好。我最终选择了另一种方式(使用 Django 命令)

以上是关于django.setup(): ModuleNotFoundError: 设置 DJANGO_SETTINGS_MODULE 时没有名为“api.apps”的模块的主要内容,如果未能解决你的问题,请参考以下文章

外部文件使用django的models

外部文件使用django的models

django离线脚本组件

django离线脚本组件

不在框架中,利用Django的models操作

Django项目7 单表增删改查