这是我的Django项目的目录结构。当我运行python代码导入模型时:from scraping.models import LinkVendorStandard
来自文件" framework_product_processing.py"它抛出了这个异常:
django.core.exceptions.ImproperlyConfigured:请求设置DEFAULT_INDEX_TABLESPACE,但未配置设置。您必须先定义环境变量DJANGO_SETTINGS_MODULE或在访问设置之前调用settings.configure()。
当我添加此代码时:
import django
django.setup()
初始化django项目设置,我得到以下异常: django.core.exceptions.AppRegistryNotReady:尚未加载应用。
我对此行为有以下2个问题:
import django;django.setup()
代码后,为什么我会收到 django.core.exceptions.AppRegistryNotReady:尚未加载应用。有人可以解释一下吗?
更新: 文件" framework_prodcut_processing.py"我将它移动到non_app python目录时运行没有任何错误。 non_app不是Django应用程序。
答案 0 :(得分:5)
<强> django.core.exceptions.ImproperlyConfigured 强>
当您运行python manage.py runserver
之类的命令时,django会使用django.setup
环境变量为您自动运行DJANGO_SETTINGS_MODULE
。因此views.py
中的代码可以访问模型,因为django确保在导入视图之前调用django.setup
。由于您将shell脚本作为简单的python文件运行,因此您必须手动调用django.setup
。
django.core.exceptions.AppRegistryNotReady:尚未加载应用
这通常发生在导入完整设置文件之前导入应用程序时(即在INSTALLED_APPS初始化之前)。因此,请确保您在设置文件中没有任何代码,该文件从其他应用程序导入代码。
另外,请确保您没有在应用的__init__.py
个文件中导入模型或类似的应用代码。