[英]how to execute python script containing django functions
我有一个python脚本test.py
, make_password
从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
函数的事实)。
您收到的错误消息很可能是抱怨设置模块不可用。
导入任何核心模块时,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
)。
基本相同事物的其他版本也可用 。
2.建立管理命令
文档中对此进行了详细解释。
原则上,您需要提供一个yourapp.management.mycommand
模块,其中包含单个Command
类:
class Command(BaseCommand):
def handle(self, *args, **options):
# make_password()
该命令可以通过django的manage.py
运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.