无法在Docker容器中的ipdb控制台中打字

5
我正在使用docker-compose构建我的Docker容器,并在运行容器时使用--service-ports标志,如下所示:
docker-compose run --service-ports $(service_name) -d

当尝试在容器中的Python脚本中调用ipdb时,使用import ipdb; ipdb.set_trace() ipdb已初始化,但我无法在控制台中输入任何内容。 我还必须手动重新启动终端会话才能停止它(CTRL + C , CTRL + D 等不起作用)。 它并不像终端已经冻结了,因为我仍然可以滚动回去,并且在焦点/取消焦点时光标外观也会改变。
这是我的终端长什么样子(我使用 iTerm ): enter image description here 有什么想法如何解决这个问题吗?
2个回答

2

事实证明,问题的根源在于ipdb与docker容器中的eventlet.monkey_patch不兼容。

简单解决方案,切换到pdbpp :D


不幸的是,pdbpp 仍然不能与 Python 3.x 正确兼容,因此这种解决方法并不适用于所有情况。 - Kevin
啊,我还在使用古老的Python 2.7版本工作。不过现在我们至少明白了,这只是一个案例兼容性问题,我们可以探索其他选项。 - steve
@kevin 只是作为参考:pdbpp 已经有一段时间以来得到维护,并且与py3兼容:https://github.com/antocuni/pdb - blueyed


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接