Como conectar o Qgis ao pycharm no Ubuntu OS

10

Eu apenas comecei a usar pycharm com qgis, mas não consegui conectar os dois. Pycharm sempre permanece em um estado de "aguardando conexão". A maioria dos tutoriais disponíveis aponta para o Windows, mas eu estou usando o Ubuntu, então não consegui encontrar uma maneira de depurar o código qgis no pycharm. Aqui está o meu código 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

Eu habilitei pontos de interrupção no pycharm e também adicionei o pycharm-debug.egg no pythonpath. Alguém como configurá-lo a partir do qgis no ubuntu?

pycharm está sempre em:

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 executo esse script na parte superior do qgis, nada acontece, o ponto de interrupção não é chamado.

mimetype
fonte
Deseja que as classes QGIS sejam reconhecidas pelo Pycharm?
wondim

Respostas:

1

No Arch Linux (mas também deve funcionar no Ubuntu), eu uso esse script python que, ao carregar o QGIS, verifica se alguém está ouvindo na porta 53100. Nesse caso, ele tenta importar o pydevd do diretório do pycharm e tenta se conectar ao o depurador 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

Minha configuração completa está aqui

Marioba
fonte