如何从Python shell执行manage.py.

Tre*_*son 8 python django

我正在尝试在我的Django项目中使用Werkzeug,它本质上是一个Web页面的Python shell接口.我要运行诸如命令python manage.py syncdbpython manage.py migrate,但在Python壳它是不是很简单.

我尝试import manage从那里尝试命令,但是从manage.py源代码的外观来看,没有什么可以调用的,因为它传递了参数django.core.management.execute_from_command_line().

我还尝试定义一个函数,如" 从Python运行shell命令并捕获输出 ",但是使用它来调用它

runProcess('Python manage.py syncdb')
Run Code Online (Sandbox Code Playgroud)

仅返回:

<generator object runProcess at 0x000000000520D4C8>
Run Code Online (Sandbox Code Playgroud)

Val*_*ior 11

您可以从命令行启动Django shell:

python manage.py shell
Run Code Online (Sandbox Code Playgroud)

然后导入execute_from_command_line:

from django.core.management import execute_from_command_line
Run Code Online (Sandbox Code Playgroud)

最后,您可以执行所需的命令:

execute_from_command_line(["manage.py", "syncdb"])
Run Code Online (Sandbox Code Playgroud)

它应该解决你的问题.

作为替代方案,您还可以查看子进程模块文档.您可以执行一个进程,然后检查其输出:

import subprocess
output = subprocess.check_output(["python", "manage.py", "syncdb"])
for line in output.split('\n'):
    # do something with line
Run Code Online (Sandbox Code Playgroud)