我正在使用这个node plugin来运行django管理命令。
如果我直接执行该命令,它可以工作:
sls wsgi manage local -c "check --list-tags"如果我调用作为子进程调用它的python脚本,它找不到命令:
import subprocess
proc = subprocess.Popen(['sls', 'wsgi', 'manage', 'local', '-c', '"check --list-tags"'])
(out, err) = proc.communicate()
"Traceback (most recent call last):\n File \"/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py\", line 102, in call_command\n app_name = get_commands()[command_name]\nKeyError: 'check --list-tags'\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"./wsgi_handl
er.py\", line 89, in handler\n management.call_command(*shlex.split(meta.get(\"data\", \"\")))\n File \"/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py\", line 104, in call_command\n raise CommandError(\"Unknown command: %r\" % command_name)\ndjango.core.management.base.CommandError: Unknown command: 'check --list-tags'\n
"如果我执行一个不包含任何空格的命令,它可以工作,例如:
subprocess.Popen(['sls', 'wsgi', 'manage', 'local', '-c', '"makemigrations"'])发布于 2019-03-20 19:46:41
如果使用shell=True,您可以将完整的命令作为字符串传递,尝试一下,稍后再对其进行优化
proc = subprocess.Popen(
'sls wsgi manage local -c "check --list-tags"',
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)https://stackoverflow.com/questions/55259609
复制相似问题