首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django命令包含双引号和空格的Python子进程

django命令包含双引号和空格的Python子进程
EN

Stack Overflow用户
提问于 2019-03-20 19:22:43
回答 1查看 122关注 0票数 0

我正在使用这个node plugin来运行django管理命令。

如果我直接执行该命令,它可以工作:

代码语言:javascript
复制
sls wsgi manage local -c "check --list-tags"

如果我调用作为子进程调用它的python脚本,它找不到命令:

代码语言:javascript
复制
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
    "

如果我执行一个不包含任何空格的命令,它可以工作,例如:

代码语言:javascript
复制
subprocess.Popen(['sls', 'wsgi', 'manage', 'local', '-c', '"makemigrations"'])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-20 19:46:41

如果使用shell=True,您可以将完整的命令作为字符串传递,尝试一下,稍后再对其进行优化

代码语言:javascript
复制
proc = subprocess.Popen(
    'sls wsgi manage local -c "check --list-tags"',
    shell=True,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55259609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档