Come connettere Qgis a Pycharm nel sistema operativo Ubuntu


10

Ho appena iniziato a usare pycharm con qgis ma non sono riuscito a collegarli entrambi. Pycharm rimane sempre in uno stato di "attesa di connessione". La maggior parte dei tutorial disponibili punta a Windows, ma sto usando Ubuntu, quindi non ho trovato il modo di eseguire il debug del codice QGIS su Pycharm. Ecco il mio codice 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

Ho abilitato i punti di interruzione nel pycharm e ho anche aggiunto il pycharm-debug.egg nel pythonpath qualcuno come lo configura da qgis su Ubuntu?

pycharm è sempre 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...

Quando eseguo questo script in alto da qgis non succede nulla, il punto di interruzione non viene chiamato.


Vuoi che le classi QGIS siano riconosciute da Pycharm?
Wondim

Risposte:


1

Su Arch Linux (ma dovrebbe funzionare anche su Ubuntu), utilizzo questo script Python che al caricamento di QGIS verifica se qualcuno sta ascoltando sulla porta 53100. In tal caso, prova a importare pydevd dalla directory di Pycharm e cerca di connettersi a il debugger remoto.

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

La mia configurazione completa è qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.