如何执行包含django函数的

时间:2015-06-03 15:52:51

标签: python django

我有一个python脚本test.py,可以从Django库中导入make_password函数。它是这样的:

from django.contrib.auth.hashers import make_password

.... a lot of other stuff
def init():
    ...

if __name__ == "__main__":
    init()

所以,我想从命令行运行它,如:

python test.py

但这导致了一整套错误消息,这些消息都是关于导入Django模块的。如果我发表评论from django.contrib.auth.hashers import make_password,那么一切正常(除非我不能使用make_password函数)。

1 个答案:

答案 0 :(得分:2)

您收到的错误消息很可能是投诉设置模块不可用。

当您导入任何核心模块时,Django会初始化其运行时环境(通过django.core.management.setup_environ())。如果没有有效的项目环境,django生态系统就无法运行。

您至少有两个选择:

<强> 1。手动设置django设置模块

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'yourapp.settings'

from django.contrib.auth.hashers import make_password
...

请注意,这需要通过yourapp.settings提供sys.path,因此可能需要明确将项目路径添加到sys.path(或PYTHON_PATH)。

基本相同的其他版本are available

<强> 2。建立管理命令

the documentation中详细解释了这一点。

原则上,您需要提供一个包含单个yourapp.management.mycommand类的Command模块:

class Command(BaseCommand):
    def handle(self, *args, **options):
       # make_password()

该命令可以通过django的manage.py运行。