首页 > 解决方案 > 我想从生成 CSV 文件但似乎在错误环境中的独立 python 脚本写入 Django 模型

问题描述

我有一个独立的 python 脚本,它会定期自动运行,以从外部数据生成 CSV 文件。

我想这个脚本是否也可以更新在 virtualenv 中运行的 Django 应用程序中的相应模型。

我在脚本中添加了以下几行

from django.conf import settings
settings.configure()
from app.models import BER_assessors

模型是 BER_assessors,在 django 应用程序根目录下的 app 目录下的 model.py 文件中定义。该脚本也位于 django 应用程序的根目录(包含 app/authentication/core/env/media 等文件夹的那个)

当我运行我的脚本时,我收到错误消息“django.core.exceptions.AppRegistryNotReady:应用程序尚未加载。” Django 应用程序本身运行良好。

我认为存在上下文或环境问题,即我不在应用程序中,因此无法写入模型等。我该如何纠正这个问题?

最好的问候/科尔姆

标签: pythondjangocsvdjango-models

解决方案


我无法得到上面的答案。它一直告诉我没有定义其他模块。所以在挖掘之后,事实证明我需要激活 virtualenv 才能使所有这些模块可用。

这个页面给了我正确的方向,我最终在文件顶部添加了以下内容。

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文件在core子目录下


推荐阅读