Интегрированная среда разработки 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 > 2Giga 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) # должен показать путь к интерпретатору из venvNotebook 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 секунды.
Расширенные примеры работы с 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
>>> # объекты из редактора также доступны, если код выполнен в отладке