对一个基本问题的道歉,但老实说,即使我确定这是一个简单的解决方法,我仍然没有找到可行的答案。
我正在从完全不同的工作目录中的命令行调用python文件,该文件是Django应用程序的一部分(与模型,视图相同的文件夹)。 python文件称为模块而不是包,因为我没有使用“ -m”参数。 python文件从模型文件导入,通过 init 文件等,我在该文件上进行了长时间的回溯,并以以下错误结尾:
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
因此,我在python文件中的from models import modelA, modelB
语句之前添加了以下行:
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', "C:/Users/oktested/further_file_path/settings")
基本上,我将整个路径放入其中的settings.py文件,不带.py扩展名。但是这样做之后,我得到了ModuleNotFoundError: No module named 'C:\Users\oktested\'
。
如何表达Django项目中已经存在的settings.py文件的路径?我在Windows 10 FYI上使用Django 2.1。
使用项目文件结构更新:
project1/
db
manage.py
MyAppFolder/
__init__.py
models.py
views.py
script.py
project1folder/
settings.py
__init__.py
script.py是我需要从外部调用的文件,而settings.py是设置文件。在manage.py中,由于django_settings_module与manage.py在同一目录中,因此很容易将其声明为“ project1folder.settings”。如何在script.py中声明django_settings_module,以便script.py可以继续正常运行,就像我从Django应用程序中调用它一样?
答案 0 :(得分:0)
我建议您使用以下命令:
python manage.py shell
假设您要在views.py文件中调用“ foo”函数。
您可以在提示符下输入:
>> from myapp.views import foo
>>foo()
答案 1 :(得分:0)
您可以将django项目的路径插入sys.path
中,例如在Windows上:
sys.path.insert(1, r'C:\your\path\djangoproject')
从此处,您可以指定设置文件的虚线路径,例如:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yourapp.settings")
django.setup()