python - PyCharm 调试子进程/Popen 收到错误消息
问题描述
我使用动态脚本来获取由ansible框架提供的主机信息。
path = '/Volumes/Work@SSD/code/python/icode_devop_be/app/libs/ansible/sources/redis_set_sources.py'
host = 'WIN-2OLQLBCH8FO'
cmd = [path, "--host", host]
try:
sp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except OSError as e:
raise AnsibleError("problem running %s (%s)" % (' '.join(cmd), e))
(out, err) = sp.communicate()
当我在Pycharm中调试代码时,我收到了错误消息:
b'usage: redis_set_sources.py [-h] (--list | --host HOST)\nredis_set_sources.py: error: unrecognized arguments: --port 57112 --client 127.0.0.1 --multiproc --file WIN-2OLQLBCH8FO\n'
但是我在终端中运行命令得到了正确的消息:
命令:
app/libs/ansible/sources/redis_set_sources.py --host 'WIN-2OLQLBCH8FO'
正常消息:
{"hostname": "WIN-2OLQLBCH8FO", "port": 5985, "ansible_host": "192.168.0.254", "ansible_user": "administrator", "ansible_ssh_password": "All4Icode", "connection": "winrm", "private_key": null, "transport": "ntlm"}
解决方案
绝对您将意外参数传递给您的命令,因为如果您传递它们,错误消息也会在终端中指示:
error: unrecognized arguments: --port 57112 --client 127.0.0.1 --multiproc --file
我认为本文描述了您的问题的解决方案:
https://youtrack.jetbrains.com/issue/PY-7464?_ga=2.7923002.94425001.1581367237-1197479344.1576355856
基本上它建议:
- 关闭 PyCharm
- 编辑 .idea/workspace.xml 文件并将行从:
< 选项名称="多进程" 值="真" />
至
<option name="MULTIPROCESS" value="false" />
3.重新启动pycharm 4.在Debug中运行脚本,它再次工作。
我不确定这是否是您的解决方案,但问题模式看起来相同。
推荐阅读
- c++ - 如何配置 CMake 文件以添加编译器标志?
- excel - 使用 VBA 和 CDO 从 Excel 发送电子邮件不可靠?
- jnlp - 客户端首选项不接受服务器选择的协议版本 TLS10
- sql - 如果新值大小相同,nvarchar 的 SQL Server 更新语句是否会覆盖磁盘上的相同地址?(微软 SQL 服务器)
- c# - UWP 打印预览仅在第一页显示空白页
- java - 为什么我会收到错误消息 java.lang.RuntimeException: java.sql.SQLException: No database selected in my java code(linking with mysql database)
- java - 活动没有足够快地暂停
- c# - 使用变量时不显示 ASP.net Base64 图像字符串
- reactjs - 反应减速器工具包调度不起作用
- html - 具有纯 CSS 的可调整大小的 div