【问题标题】:Can't type in ipdb console in docker container无法在 docker 容器中输入 ipdb 控制台
【发布时间】:2016-11-27 21:26:25
【问题描述】:

我正在使用 docker-compose 构建我的 docker 容器,并使用 --service-ports 标志运行容器,如下所示:

docker-compose run --service-ports $(service_name) -d

当尝试使用import ipdb; ipdb.set_trace() 在容器中的 python 脚本中调用 ipdb 时,ipdb 已初始化,但我无法在控制台中输入任何内容。我还必须手动重新启动终端会话才能停止它(CTRL+CCTRL+D 等什么都不做)。终端也没有冻结,因为我仍然可以向后滚动并且在焦点/取消焦点时光标也会改变外观。

这就是我的术语的样子(我使用iTerm):

任何想法如何解决这个问题?

【问题讨论】:

    标签: python docker docker-compose iterm ipdb


    【解决方案1】:

    结果归结为 ipdb 与 docker 容器中的 eventlet.monkey_patch 不兼容。

    简单修复,切换到pdbpp:D

    【讨论】:

    • 不幸的是,pdbpp 仍然不能与 Python 3.x 正确兼容,因此这种解决方法并非在所有情况下都有效。
    • 啊,我还在 Python 2.7 的古老土地上工作。至少现在我们明白这只是一个个案兼容性问题,我们可以探索其他选项。
    • @kevin 仅供参考:pdbpp 又维护了一段时间,兼容 py3:github.com/antocuni/pdb
    【解决方案2】:
    猜你喜欢
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多