在Django2.0中,编写一个脚本来删除模型

2024-04-20 11:57:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经尝试了(Django script to access model objects without using manage.py shell)堆栈问题的所有答案,但总是出现错误“no module name'project\u name'”。 我的项目名是snapbackend。你知道吗

我有一个__init__.py设置。我知道我可以编写django命令,但是运行一个函数有点过分了。你知道吗

我正在使用django 2.0,我想编写一个脚本来删除旧模型。你知道吗

import os
os.environ["DJANGO_SETTINGS_MODULE"] = "snapbackend.settings.production"
import django

django.setup()
import snapbackend
from snapbackend.models import deleteCapsuleModels

deleteCapsuleModels()

Tags: todjangonamepyimportmodelobjectsaccess
2条回答

这是因为您的模块没有安装,并且没有从它所在的目录运行。你知道吗

如果您使用的是setuptools(一个setup.py文件),那么解决这个问题的正确方法是使用python setup.py develop将您的项目符号链接到您的站点包中。这将使您的模块在整个项目中都可用。你知道吗

如果您不使用setuptools,那么这就有点棘手了。如果在运行脚本时能够选择当前的工作目录,则可以通过在运行脚本之前执行cd YOUR_PROJECT_DIRECTORY来解决此问题。你知道吗

在不能处理当前工作目录的情况下,应该将PYTHONPATH环境变量设置为项目的根目录。此环境变量用于为Python添加其他路径,以便在其中查找模块。你知道吗

出于安全原因,不要使用PATHsys.path是很重要的。具体来说,您不希望意外地将任何不知道的可执行文件引入到系统中。你知道吗

希望这有帮助!你知道吗

这是一个与您有关的问题^{},看起来很简单,但往往更难弄清楚。你知道吗

Python找不到您的django根,因此您需要告诉Python在哪里可以找到该模块(不确定为什么它不工作),但您可以在运行脚本时执行以下操作:

PYTHONPATH=../../. python your_script.py

或苍蝇:

import sys
sys.path.append('../../.')

就你而言:

import os
import sys
sys.path.append('../path/to/snapbackend/.')
os.environ["DJANGO_SETTINGS_MODULE"] = "snapbackend.settings.production"
import django

目录将取决于到django根的相对路径

相关问题 更多 >