Интегрированная среда разработки Wing для Python: практическое руководство

Раздел: Инструменты -> Среды разработки

Возможности Wing Python IDE: отладка, автодополнение и управление проектами

Wing Python IDE существует в трёх редакциях: Wing Pro (полнофункциональная), Wing Personal (бесплатная с ограничениями) и Wing 101 (упрощённая для обучения). В статье рассматриваются приёмы работы в редакции Pro, но большинство примеров применимы и к Personal.

Как выполнить пошаговую отладку скрипта с точками останова?

Основной инструмент Wing - отладчик. Чтобы начать, откройте файл script.py и установите точку останова (клавиша F9). Затем запустите отладку через меню Debug > Start или нажмите F5.

# script.py
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

if __name__ == '__main__':
    print(factorial(5))

Visual studio python библиотеки (visual studio и библиотеки python)

После запуска выполнение остановится на первой строке def factorial(n):. Используйте клавиши F10 (шаг с обходом), F11 (шаг с заходом) и Shift+F11 (выйти из функции).

Типичная ошибка:

Если отладчик не останавливается на точке останова, проверьте, что файл сохранён, а интерпретатор Python указан корректно в настройках проекта (Project > Project Properties > Python Executable).

Как настроить условные точки останова для пропуска итераций?

Правой кнопкой мыши щёлкните по маркеру точки останова и выберите Edit Breakpoint. В появившемся окне укажите условие, например n < 2. Отладка остановится только когда n меньше 2.

for i in range(5):
    print(f'Итерация {i}')  # точка останова с условием i > 2

Giga ide python (giga ide для python)

Результат: выполнение остановится на третьей итерации (i=3).

Как использовать автодополнение для ускорения написания кода?

Wing предлагает контекстное автодополнение для модулей, классов и методов. Начните вводить os.pa - появится список path, pardir и т.д. Выбор осуществляется стрелками и Enter.

import os
# введите os.path.join('folder', 'file') - автодополнение предложит join после os.path.

Python idle linux (idle на linux)

Для ручного вызова списка используйте Ctrl+Пробел.

Проблема:

Если автодополнение не работает для установленных пакетов (например, numpy), переиндексируйте проект через Project > Refresh File Indices.

Как управлять виртуальными окружениями в Wing?

Перейдите в Project > Project Properties > Environment. В поле Python Executable укажите путь к интерпретатору из виртуального окружения, например ~/myenv/bin/python. После этого Wing будет использовать библиотеки из этого окружения.

# Проверка окружения
import sys
print(sys.executable)  # должен показать путь к интерпретатору из venv

Notebook python (jupyter notebook в python)

Как выполнить рефакторинг переименования переменной?

Выделите имя переменной, нажмите правую кнопку мыши и выберите Refactoring > Rename. В диалоге введите новое имя. Wing переименует все вхождения в текущем файле и, при необходимости, во всём проекте (для Pro).

# До рефакторинга
old_var = 42
print(old_var)

# После рефакторинга
new_var = 42
print(new_var)

Jupiter notebook python (jupyter notebook с python)

Рефакторинг работает только для правильно распознанных имён (без динамических конструкций).

Как профилировать производительность кода?

Запустите профилирование через Debug > Profile. Wing использует встроенный cProfile и показывает дерево вызовов с временем выполнения.

# Пример для профилирования
def slow_function():
    total = 0
    for i in range(1000000):
        total += i
    return total

slow_function()

После остановки профилирования откроется окно Profiling Data, где можно увидеть, что slow_function заняла, например, 0.25 секунды.

- Pycharm python file (создание файла python в pycharm)
- Python idle windows (среда idle python на windows)

Расширенные примеры работы с Wing IDE

Отладка многопоточного приложения

Wing поддерживает отладку потоков. Установите точки останова в разных потоках; отладчик переключается между ними через панель Stack Data.

Пример
import threading

def worker(name):
    for i in range(3):
        print(f'Поток {name}: {i}')

threads = []
for name in ['A', 'B']:
    t = threading.Thread(target=worker, args=(name,))
    threads.append(t)
    t.start()

for t in threads:
    t.join()

При запуске отладки точки останова в print будут срабатывать для каждого потока. В панели Threads можно выбрать активный поток.

Типичная ошибка:

Если точки останова не срабатывают в потоках, проверьте настройку Debug > Debug Options > Thread Creation - должно быть установлено Suspend new threads.

Использование точек останова с watch-выражениями

Можно добавить выражение для отслеживания значения переменной при остановке. В окне Watch введите, например, n * 2. Значение будет пересчитываться после каждого шага.

Пример
def multiply(n):
    result = n * 2  # точка останова здесь
    return result

print(multiply(5))

Результат в watch: n * 2 = 10 при n=5.

Работа с удалённой отладкой (Wing Pro)

Wing поддерживает отладку кода, выполняющегося на удалённой машине (например, на сервере или в Docker). Настройка включает запуск на удалённой стороне специального агента wingdb.

Пример
# На удалённой машине (пример для Linux):
$ python -m wingdb  # запускает отладочный сервер на порту 2099

# В Wing: Debug > Debug Options > Remote Debugging, указать IP и порт.

После соединения можно ставить точки останова в локальном редакторе, а выполнение будет происходить удалённо.

Проблема:

Если соединение не устанавливается, проверьте файрвол и то, что версии Wing на обеих сторонах совпадают.

Интеграция с Git и системами контроля версий

Во Wing встроен просмотр изменений (diff) и поддержка git. Откройте Tools > Source Control и выберите git. В нижней панели появится список изменённых файлов.

Пример
# В терминале Wing можно выполнять git-команды:
$ git status
$ git diff

Также доступны визуальные diff-окна для сравнения версий файлов.

Создание пользовательских сниппетов

Wing позволяет добавлять шаблоны кода через Edit > Preferences > Editor > Snippets. Пример сниппета для __init__:

Пример
# Триггер: __init__
# Код:
def __init__(self, ${1}):
    self.${1} = ${1}
    ${0}

После сохранения при вводе __init__ и нажатии Tab вставляется шаблон с полями для заполнения.

Профилирование с построчным анализом

Используйте Debug > Profile Line, чтобы увидеть количество вызовов каждой строки. Это полезно для поиска узких мест.

Пример
import time

def compute():
    time.sleep(0.1)
    result = sum(range(1000))
    return result

compute()

Результат профилирования покажет, что строка time.sleep(0.1) заняла 0.1 секунды, а sum - 0.0001 секунды.

Интерактивная оболочка (Python Shell) внутри Wing

Откройте Tools > Python Shell. Можно выполнять отдельные команды и импортировать модули из текущего проекта. Shell автоматически использует активное виртуальное окружение.

Пример
>>> import math
>>> math.sqrt(16)
4.0
>>> # объекты из редактора также доступны, если код выполнен в отладке

Среда разработки Wing для Python - comments

En
Wing python ide (python)