我有一个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
函数)。
答案 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
运行。