2017-10-10 60 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 –