Как отладить контейнер python в intellij?

Плагин Docker имеет порт отладки для подключения к контейнеру введите здесь описание изображения

У меня есть приложение Python, но согласно документам порт отладки поддерживается только для java.

Как я могу установить точки останова и отладить мой контейнер python в intellij? Есть ли способ подключить контейнер python к отладчику intellij python?

Редактировать: я использую Windows 10, докер для Windows, а контейнер — Linux. Возможно, мне нужно вручную настроить какую-то удаленную отладку для отладчика intellij Python? Кроме того, можно также спросить, нужна ли мне профессиональная версия для удаленной отладки или есть обходной путь с использованием сообщества?


person red888    schedule 10.10.2017    source источник
comment
Какую хост-ОС вы используете?   -  person Tarun Lalwani    schedule 10.10.2017
comment
Windows — моя ОС, контейнер — Linux   -  person red888    schedule 10.10.2017


Ответы (1)


Вы можете сделать это с помощью удаленной отладки Python. Откройте окно конфигурации и нажмите + -> Удаленная отладка Python.

Опция отладчика Python

Затем вы либо устанавливаете порт, либо оставляете его пустым, чтобы Pycharm мог найти доступный порт.

Удаленная отладка Python

Затем щелкните значок «Отладка», чтобы запустить сервер отладки, который покажет следующее сообщение.

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, поскольку я использую Docker для Mac, но если вы используете Docker для Windows, используйте docker.for.win.localhost. Для панели инструментов или Linux вы добавите IP-адрес своей машины.

Поскольку это докер, мы, вероятно, хотим, чтобы порт был фиксированным, а не динамическим, как я. Теперь мы собираем файл докера и запускаем его.

Это откроет всплывающее окно в pycharm, щелкните автоопределение, чтобы определить исходные сопоставления.

Автоопределение

И тогда у вас будет точка останова кода в основной строке вашего файла.

«Отладка

person Tarun Lalwani    schedule 10.10.2017
comment
Есть ли сторонний плагин или что-то, что можно сделать без профессионального или другого обходного пути? - person red888; 20.12.2017
comment
Я не уверен, что есть что-то подобное для PyCharm, но, вероятно, кто-то, кто провел обширные исследования в этой области, может знать. Другим вариантом является использование PyDev Eclipse или Visual Studio Code, который используется в качестве удаленной отладки для Python. - person Tarun Lalwani; 20.12.2017
comment
pycharm-debug.egg для Python до версии 2 - person StartupGuy; 05.01.2018
comment
Для пользователей Ultimate Edition, которые не могут найти яйцо Pycharm: отладчик Python доступен в PyPi, поэтому его можно установить для удаленной отладки с помощью pip. При отладке процесса, который выполняется на другом компьютере, можно выполнить pip install pydevd вместо копирования архивов из каталога debug-eggs при установке PyCharm. - person StartupGuy; 05.01.2018