Как связать Qgis с pycharm в ОС Ubuntu

10

Я только начал использовать pycharm с qgis, но не смог соединить их обоих. Pycharm всегда находится в состоянии «ожидания соединения». Большинство доступных руководств указывают на окна, но я использую Ubuntu, поэтому не смог найти способ отладки кода qgis на pycharm. Вот мой код 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

Я включил точки останова в pycharm, а также добавил pycharm-debug.egg в pythonpath. Кто-нибудь как настраивает его из qgis на ubuntu?

pycharm всегда в:

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

Когда я запускаю этот скрипт вверху из qgis, ничего не происходит, точка останова не вызывается.

MimeType
источник
Вы хотите, чтобы классы QGIS распознавались Pycharm?
Wondim

Ответы:

1

В Arch Linux (но он должен работать и в Ubuntu), я использую этот скрипт на python, который при загрузке QGIS проверяет, прослушивает ли кто-нибудь порт 53100. Если это так, он пытается импортировать pydevd из каталога pycharm и пытается подключиться к удаленный отладчик.

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

Моя полная конфигурация здесь

Marioba
источник