So verbinden Sie Qgis mit pycharm unter Ubuntu OS


10

Ich habe gerade angefangen, pycharm mit qgis zu verwenden, konnte aber nicht beide verbinden. Pycharm bleibt immer in einem Zustand "Warten auf Verbindung". Die meisten verfügbaren Tutorials verweisen auf die Fenster, aber ich verwende Ubuntu und konnte daher keinen Weg finden, QGIS-Code auf Pycharm zu debuggen. Hier ist mein Pycharm-Code:

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

Ich habe Haltepunkte im Pycharm aktiviert und auch die pycharm-debug.egg im Python-Pfad hinzugefügt. Wie konfiguriert jemand sie von qgis auf Ubuntu?

Pycharm ist immer in:

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

Wenn ich dieses Skript oben von qgis aus starte, passiert nichts, der Haltepunkt wird nicht aufgerufen.


Möchten Sie, dass QGIS-Klassen von Pycharm erkannt werden?
Wondim

Antworten:


1

Unter Arch Linux (aber es sollte auch unter Ubuntu funktionieren) verwende ich dieses Python-Skript, das beim Laden von QGIS überprüft, ob jemand Port 53100 überwacht. Wenn ja, versucht es, pydevd aus dem Verzeichnis von pycharm zu importieren und eine Verbindung herzustellen der Remote-Debugger.

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

Meine vollständige Konfiguration finden Sie hier

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.