Jak połączyć Qgis z pycharm w Ubuntu OS


10

Właśnie zacząłem używać pycharm z qgis, ale nie mogłem połączyć obu. Pycharm zawsze pozostaje w stanie „oczekiwania na połączenie”. Większość dostępnych tutoriali wskazuje na okna, ale używam ubuntu, więc nie mogłem znaleźć sposobu na debugowanie kodu qgis na pycharm. Oto mój kod 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

Włączyłem punkty przerwania w pycharm, a także dodałem pycharm-debug.egg w pythonpath. Czy ktoś może skonfigurować go z qgis na Ubuntu?

pycharm jest zawsze w:

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

Po uruchomieniu tego skryptu na qgis nic się nie dzieje, punkt przerwania nie zostaje wywołany.


Czy chcesz, aby klasy QGIS były rozpoznawane przez Pycharm?
— zastanawiam się

Odpowiedzi:


1

W Arch Linux (ale powinien działać również na Ubuntu), używam tego skryptu python, który podczas ładowania QGIS sprawdza, czy ktoś nasłuchuje na porcie 53100. Jeśli tak, próbuje zaimportować pydevd z katalogu pycharm i próbuje się połączyć zdalny 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

Moja pełna konfiguracja jest tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.