我正在尝试在我的Django项目中使用Werkzeug,它本质上是一个Web页面的Python shell接口.我要运行诸如命令python manage.py syncdb和python 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)