Comment connecter Qgis avec pycharm dans Ubuntu OS

10

Je viens de commencer à utiliser pycharm avec qgis mais je n'ai pas pu les connecter tous les deux. Pycharm reste toujours dans un état "d'attente de connexion". La plupart des tutoriels disponibles pointent vers les fenêtres, mais j'utilise ubuntu et je n'ai donc pas pu trouver de moyen de déboguer le code qgis sur pycharm. Voici mon code pycharm:

from shapely.geometry import *
from shapely.wkt import loads

import sys

import pydevd

pydevd.settrace('localhost', port=53100, stdoutToServer=True, stderrToServer=True)

class Loader:

    def __init__(self, iface):

        """Initialize using the qgis.utils.iface
        object passed from the console.

        """
        self.iface = iface

J'ai activé les points d'arrêt dans pycharm et j'ai également ajouté le pycharm-debug.egg dans le chemin python. Quelqu'un peut-il le configurer à partir de qgis sur ubuntu?

pycharm est toujours dans:

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

Lorsque j'exécute ce script en haut à partir de qgis, rien ne se passe, le point d'arrêt n'est pas appelé.

mimetype
la source
Voulez-vous que les classes QGIS soient reconnues par Pycharm?
Wondim

Réponses:

1

Sur Arch Linux (mais cela devrait aussi fonctionner sur Ubuntu), j'utilise ce script python qui au chargement de QGIS vérifie si quelqu'un écoute sur le port 53100. Si c'est le cas, il essaie d'importer pydevd depuis le répertoire de pycharm et essaie de se connecter à le débogueur distant.

import psutil


def is_listening_local(port=53100):
    """Return True if someone is listening on the port"""

    els = psutil.net_connections()
    for el in els:
        if el.laddr.port == port:
            return True
    else:
        return False


if is_listening_local():
    try:
        import sys
        # Add the pydevd directory to PYTHONPATH
        sys.path.append('/opt/pycharm-professional/helpers/pydev/')

        import pydevd
        # Connect to the remote debugger
        pydevd.settrace(
            'localhost', port=53100, stdoutToServer=True, stderrToServer=True,
            suspend=False
        )
    except Exception:
        pass

Ma configuration complète est ici

Marioba
la source