我有一个独立的python脚本,它定期自动运行,从外部数据生成CSV文件。
我想如果这个脚本也可以更新在virtualenv中运行的Django应用程序中的相应模型。
我在脚本中添加了以下几行
from django.conf import settings
settings.configure()
from app.models import BER_assessors
该模型是django,并在BER_assessors应用程序根目录下的model.py文件中定义。该脚本也位于django应用程序的根目录中(包含app/authentication/core/env/media等文件夹)
当我运行我的脚本时,我得到了错误消息"django.core.exceptions.AppRegistryNotReady:应用程序还没有加载“。Django应用程序本身运行良好。
我认为有一个上下文或环境的问题,即我不在应用程序中,因此无法写入模型等。我如何纠正这一点?
最好的问候/问候
发布于 2021-05-20 01:52:48
独立脚本的正确顺序为:
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'module.settings')
django.setup()
# other django related imports can now be done.
发布于 2021-05-27 05:04:17
我无法得到上面的答案。它一直告诉我没有定义其他模块。因此,在深入研究之后,我发现我需要激活virtualenv才能使所有这些模块可用。
This page给了我正确的方向,我最终在文件的顶部添加了以下内容。
activate_this = '/full_path_to.../env/bin/activate_this.py'
exec(open(activate_this).read())
import sys
sys.path.append("/full_path_to.../env/lib/python3.7/site-packages")
import django
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')
django.setup()
没有更多的错误消息,脚本现在正在工作。
脚本位于django安装的根文件夹中,settings.py文件位于核心子文件夹中
https://stackoverflow.com/questions/67607281
复制相似问题