如何将Django设置导入到Python独立脚本

时间:2018-10-15 17:22:27

标签: python django python-3.x

我在调用django脚本时遇到困难。这是我当前在根目录中所做的事情:

>>> import os
>>> os.environ['DJANGO_SETTINGS_MODULE'] = 'settings.py'
>>> from django.conf import settings
>>> settings.configure()
>>> settings.DATABASES
{}

settings.DATABASES不能为空,所以我知道我没有正确初始化项目。我将如何在django2.1中做到这一点?我以前可以使用import settings; setup_environ(settings)轻松地做到这一点,但现在已经不行了。

注意:我希望能够从任何目录运行以上命令。这是尝试从tmp导入我的项目的示例:

(V) david$ cd /tmp && python

>>> import django
>>> from django.conf import settings
>>> settings.configure()
>>> django.setup()
>>> from users.models import *
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'users'

2 个答案:

答案 0 :(得分:1)

您不需要运行settings.configure()。要正确初始化,您可以执行以下操作:

if __name__ == '__main__':
    import sys, os
    sys.path.append(django_root)
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    from django.conf import settings
    print (settings.DATABASES)

答案 1 :(得分:1)

2.1文档指出您现在需要使用setup()。相关摘要:

import django
from django.conf import settings

settings.configure()
django.setup()

# Now this script or any imported module can use any part of Django it needs.
from myapp import models

Here is the full documentation.