[PYTHON] Essayez d'utiliser la fonction de débogage à distance de PyCharm

L'une des fonctionnalités de vente de PyCharm, un IDE Python, est la fonctionnalité de débogage à distance. C'est une fonction très pratique, mais il n'y avait pas beaucoup de pages qui expliquaient comment l'utiliser en japonais, donc j'aimerais expliquer comment la configurer et comment l'utiliser de manière pratique.

Besoin de débogage à distance

La plupart des cas, tels que les erreurs de syntaxe simples et les bogues qui se produisent à chaque fois, peuvent être résolus par un débogage local. Cependant, les bogues dépendants de l'environnement et les bogues causés par des données utilisateur spécifiques sont difficiles à trouver par le débogage local. De plus, je pense qu'il existe de nombreux cas où un environnement virtuel est préparé localement et exécuté là-bas. Le débogage à distance est toujours efficace dans ce cas.

Il existe deux types de fonctions appelées débogage à distance, je vais donc vous expliquer chacune d'elles.

Méthode du serveur de débogage Python

C'est un format qui démarre le serveur de débogage localement et y accède à distance.

Préparation à distance

Tout d'abord, préparez l'environnement distant. Il existe une archive pour le débogage dans le répertoire où vous avez installé PyCharm localement, alors copiez-la dans un emplacement approprié sur le serveur distant.

scp /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg user@host:/path/to/pycharm-debug.egg

Transmettez le chemin du fichier ci-dessus sur le serveur distant. Ajoutez-le à la variable d'environnement "PYTHONPATH" ou ajoutez le chemin d'accès par programme à sys.path.

Exemple: lors de l'ajout à sys.path

import sys
sys.path.append('/path/to/pycharm-debug.egg')

Préparation locale

Ensuite, ajoutez un paramètre qui appelle le serveur local.

import pydevd
pydevd.settrace(192.168.1.1, port=12345, stdoutToServer=True, stderrToServer=True)

Le premier argument de settrace est le nom d'hôte local (si le distant et le local sont sur des réseaux différents, ils doivent pouvoir accéder l'un à l'autre). Le deuxième argument est le numéro de port qui écoute localement.

La préparation est terminée.

Exécution du débogage

Ensuite, démarrez le serveur qui écoute localement. Dans les paramètres "Exécuter / Déboguer les configurations" de PyCharm, sélectionnez "Python Remote Debug" à partir du bouton + en haut à gauche.

スクリーンショット 2016-12-19 20.16.58.png

"Nom d'hôte local" est le nom d'hôte local défini précédemment dans le premier argument de settrace. Pour "Port", entrez le numéro de port spécifié dans le deuxième argument. Appuyez sur OK, définissez un point d'arrêt, puis cliquez sur le bouton Déboguer pour entrer en veille localement.

Le serveur distant démarre normalement avec runserver, etc. Désormais, lorsque vous accédez au serveur distant avec un navigateur, etc., vous pouvez vous arrêter au point d'arrêt et exécuter une étape d'exécution, etc. à partir du PyCharm local.

méthode d'interprétation à distance

Il s'agit d'une méthode de connexion avec ssh et d'utilisation d'un interpréteur distant. Il peut être utilisé rarement. De plus, cette méthode semble être disponible uniquement dans l'édition professionnelle payante.

Activez "SSH Remote Run plugin" depuis l'écran des paramètres PyCharm. スクリーンショット 2016-12-19 12.17.27.png

Puis "Paramètres> Projet: serveur> Interpréteur de projet" Cliquez sur le symbole d'engrenage à côté de "Project Interpreter" et sélectionnez Ajouter une télécommande.

Sélectionnez Identifiants SSH et saisissez les informations pour vous connecter avec SSH. スクリーンショット 2016-12-19 16.02.34.png

Cliquez sur le bouton en regard des mappages de chemins pour ajouter le répertoire d'application local et le répertoire d'application distante.

Cela ajoutera l'interpréteur de serveur distant à la liste des interprètes afin que vous puissiez le sélectionner et l'exécuter localement.

finalement

Étant donné que la méthode Python Debug Server exécute pydev, je pense que c'est une bonne idée de faciliter la commutation du paramètre ON / OFF et de l'activer uniquement lorsque cela est nécessaire. C'est un problème à configurer, mais c'est une fonctionnalité très utile, donc je la recommande vivement.

Recommended Posts

Essayez d'utiliser la fonction de débogage à distance de PyCharm
Essayez d'utiliser la fonction de modèle de Django
Essayez d'utiliser la fonction de brouillon de Pelican
Essayez d'utiliser Tkinter
Essayez d'utiliser docker-py
Essayez d'utiliser PDFMiner
Essayez d'utiliser des géopandas
Essayez d'utiliser Selenium
Essayez d'utiliser scipy
Essayez d'utiliser pandas.DataFrame
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser tf.metrics
Essayez d'utiliser PyODE
Essayez d'utiliser virtualenv (virtualenvwrapper)
[Azure] Essayez d'utiliser Azure Functions
Essayez d'utiliser virtualenv maintenant
Essayez d'utiliser W & B
Essayez d'utiliser Django templates.html
[Kaggle] Essayez d'utiliser LGBM
Essayez d'utiliser l'analyseur de flux de Python.
Essayez d'utiliser Tkinter de Python
Essayez d'utiliser Tweepy [Python2.7]
Essayez d'utiliser collate_fn de Pytorch
Essayez d'utiliser PythonTex avec Texpad.
[Python] Essayez d'utiliser le canevas de Tkinter
Essayez d'utiliser l'image Docker de Jupyter
Essayez d'utiliser scikit-learn (1) - Clustering K par méthode moyenne
Essayez l'optimisation des fonctions à l'aide d'Hyperopt
Essayez d'utiliser Azure Logic Apps
Détection de caractéristiques à l'aide d'opencv (détection de coin)
[Kaggle] Essayez d'utiliser xg boost
Essayez d'utiliser l'API Twitter
Essayez d'utiliser OpenCV sur Windows
Essayez d'utiliser Jupyter Notebook de manière dynamique
Essayez d'utiliser AWS SageMaker Studio
Essayez de tweeter automatiquement en utilisant Selenium.
Essayez d'utiliser SQLAlchemy + MySQL (partie 1)
Essayez d'utiliser l'API Twitter
Essayez d'utiliser SQLAlchemy + MySQL (partie 2)
Essayez d'utiliser l'API PeeringDB 2.0
Essayez d'utiliser pytest-Overview and Samples-
Débogage à distance avec Visual Studio 2017
Essayez d'utiliser le folium avec anaconda