2017-10-10 6 views
6

Le module de menu fixe a un port de mise au point pour la connexion à un récipient enter image description hereComment déboguer un conteneur python dans intellij?

j'ai une application python, mais selon le docs le port de mise au point est pris en charge uniquement pour Java.

Comment puis-je définir des points d'arrêt et déboguer mon conteneur python dans intellij? Est-il possible que le conteneur python se connecte au débogueur intellij python? Editer: J'utilise Windows 10, docker pour Windows, et le conteneur est Linux. Peut-être que j'ai besoin de configurer manuellement un certain type de débogage à distance pour le débogueur Intellij Python? Aussi, pourrait aussi bien demander, dois-je avoir la version professionnelle pour le débogage à distance ou y at-il une solution de contournement en utilisant la communauté?

+0

Quel système d'exploitation hôte utilisez-vous? –

+0

Windows est mon système d'exploitation, le conteneur est Linux – red888

Répondre

5

Vous pouvez le faire en utilisant Python Remote Debugging. Ouvrez la fenêtre de configuration et cliquez sur + -> Python débogage à distance

Python Debugger Option

Ensuite, vous soit mis un port ou garder le champ vide pour PyCharm de trouver un port disponible.

Python Remote Debug

Cliquez ensuite sur l'icône de débogage pour lancer le serveur de débogage qui montrera ci-dessous type de message

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... 

Maintenant, vous devez débogage pydev d'installation à l'intérieur docker. Vous aurez besoin de pycharm-debug-py3k.egg pour cela. Pour moi, je copiais sur mon dossier en cours Dockerfile comme ci-dessous

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

L'emplacement de votre va changer en fonction de la version IntelliJ installée. Après cela, nous devons modifier notre 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 

Le debug_test.py lors de sa construction aura en dessous des lignes en haut

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

Note: Je l'ai utilisé docker.for.mac.localhost comme je l'utilise docker pour mac, mais si vous utilisez Docker pour Windows, utilisez docker.for.win.localhost. Pour toolbox ou linux vous ajouterez l'adresse IP de votre machine

Comme il est docker, nous voulons probablement garder le port fixe au lieu de dynamique comme je l'ai fait. Maintenant, nous construisons le fichier docker et l'exécutons.

Cela ouvrira une fenêtre contextuelle dans PyCharm, cliquez sur autodetect pour détecter les correspondances source

Auto detect

Et vous aurez votre code breakpointed à la ligne principale de votre fichier

Debug Local Execution Remote

+0

Y at-il un plug-in tiers ou quelque chose pour être en mesure de le faire sans professionnel ou une autre solution de contournement? – red888

+1

Je ne suis pas sûr qu'il existe quelque chose comme ça pour PyCharm mais probablement quelqu'un qui a fait des recherches approfondies dans le domaine peut savoir. L'autre option est d'opter pour PyDev Eclipse ou Visual Studio Code qui en débogage à distance pour Python –

+1

pycharm-debug.egg pour Python jusqu'à la version 2 –