2017-10-10 118 views
6

的搬运工插件具有用于连接到一个容器 enter image description here如何在intellij中调试python容器?

我有一个python应用调试端口,但是根据docs调试端口仅支持Java的。

如何在intellij中设置断点并调试我的python容器?有什么办法可以让python容器连接到intellij python调试器?

编辑:我运行的是Windows 10,Docker for Windows,容器是linux。也许我需要为intellij Python调试器手动设置某种远程调试?另外,不妨问一下,我是否必须拥有专业的远程调试版本,或者是否有使用社区的解决方法?

+0

您使用的是哪个主机操作系统? –

+0

Windows是我的操作系统,容器是Linux – red888

回答

5

您可以使用Python远程调试来实现这一点。打开配置窗口,单击+ - > Python的远程调试

Python Debugger Option

然后您可以设置一个端口或保持空白Pycharm找到一个可用的端口。

Python Remote Debug

然后点击调试图标启动调试服务器,下方会显示出一种消息

Starting debug server at port 57588 
Use the following code to connect to the debugger: 
import pydevd 
pydevd.settrace('localhost', port=57588, stdoutToServer=True, stderrToServer=True) 
Waiting for process connection... 

的现在,你需要安装调试的PyDev内泊坞窗。你需要这个pycharm-debug-py3k.egg。对我来说,我复制到我目前的Dockerfile文件夹,如下所示

cp "/Users/tarun.lalwani/Library/Application Support/IntelliJIdea2017.2/python/pycharm-debug-py3k.egg" . 

您的位置将根据安装的IntelliJ版本而改变。在那之后,我们需要修改我们的Dockerfile

FROM python:3.6 
WORKDIR /app 
ENV PYTHONPATH=/app:/app/debug 
COPY pycharm-debug-py3k.egg /app/debug 
COPY debug_test.py /app/ 
CMD python debug_test.py 

debug_test.py时建成后将有以下线在顶部

import pydevd 
pydevd.settrace('docker.for.mac.localhost', port=55507, stdoutToServer=True, stderrToServer=True) 

注:我已经使用docker.for.mac.localhost因为我用泊坞窗的Mac,但如果使用Docker for windows,则使用docker.for.win.localhost。对于工具箱或Linux,你将添加你的机器的IP地址

因为它是码头,我们可能想保持端口固定,而不是像我一样动态。现在我们构建docker文件并运行它。

这将打开pycharm一个弹出窗口中,单击自动检测检测源映射

Auto detect

,然后你将有你的代码breakpointed在你的文件的主线

Debug Local Execution Remote

+0

是否有第三方插件或某些能够在没有专业或其他解决方法的情况下做到这一点? – red888

+1

我不确定PyCharm是否有类似的东西,但可能有人在该领域做过广泛的研究。其他选项是使用PyDev Eclipse或Visual Studio Code作为Python的远程调试 –

+1

Python的pycharm-debug.egg到版本2 –