Wing IDE 101 7.2.2.0
Wing IDE – интегрированная среда программирования для языка Python. Разработкой занимается американская компания Wingware. Платформа имеет бесплатную демо версию с ограниченным функционалом.
Платная Pro версия Wing IDE поставляется в двух редакциях —Personal и Commercial (персональное и коммерческое использование). Также стоит отметить что среда Wing IDE не имеет русской локализации.
Для функционирования среды разработки требуется предустановленный Python 2 или 3 версии. Также возможно использование альтернативных реализаций PyPy, IronPython, and Jython с некоторыми ограничениями.
Функции и особенности среды разработки Wing IDE 101 7.2.2.0:
- Функциональный редактор кода для Python, поддерживающий эмуляцию вида vi, emacs, Eclipse, Visual Studio, XCode и MATLAB;
- Интерактивный отладчик с тестированием многопроцессорного и многопоточного кода;
- Поддержка популярных систем контроля версий;
- Возможность исполнения на удаленной или виртуальной машине;
- Поддержка ОС Windows 7, 8, 10, macOS 10.12 и новее, deb/rpm совместимых x64 дистрибутивов Linux;
- Подсветка более 70 языков, таких как C++, CoffeeScript, CSS, Python и др;
Ограничения бесплатной версии:
- Дополнительный функционал доступен только в Pro версии;
wing-101-7.2.2.0.exe
Скриншоты
Для полного комплекта мы рекомендуем вам также скачать DEV-C++ (полнофункциональная IDE для программирования на языке C/C++).
Похожие программы
Texmaker 5.0.4
HexCmp 2.34.1
QBasic 1.0
HxD 2.4.0.0
Free JavaScript Editor 4.7
Free Hex Editor Neo 6.54
Solvusoft: Microsoft Silver Certified Company
Компания Solvusoft имеет репутацию лучшего в своем классе независимого поставщика программного обеспечения,
Microsoft признал Solvusoft в качестве ведущего независимого поставщика программного обеспечения, который достиг максимального уровня компетентности и совершенства в разработке ПО. Тесные отношения Solvusoft с Microsoft в качестве сертифицированного серебряного партнера позволяют нам предлагать лучшие программные решения в своем классе, оптимизированные для работы на устройствах с операционными системами Windows.
How is the Silver Competency Level Attained?
To achieve a Silver competency level, Solvusoft goes through extensive independent analysis that looks for, amongst other qualities, a high level of software expertise, a successful customer service track record, and top-tier customer value. As a Silver Certified Application Developer, Solvusoft is able to provide the highest level of customer satisfaction through delivering top-level software and service solutions, which have been subject to a rigorous and continually-audited approval process by Microsoft.
Исследование защиты Wing IDE
Доброго здравия! Не удивлюсь, что Вы раньше даже не слышали об этой программе. Как и я, до того дня, когда мне пригодился Python Debugger. Да, знаю, есть pdb, но его функционал и то, как он представлен, мне совершенно не приглянулось. После непродолжительных поисков я наткнулся на этот замечательный продукт. Тут есть все, что может пригодиться в отладке ваших Python приложений (скажу сразу: данный язык я не изучал, поэтому, если какие-то неточности всплывут, просьба не ругаться).
Предостережение: повторяя действия из статьи, вы действуете на свой страх и риск!
Итак, мы начинаем.
Пациент, сразу скажу, необычный. Во-первых: он поставляется с исходниками (. ), пускай и в байт-коде; во-вторых, как это иногда бывает… в общем, увидите.
Первым делом, качаем программу (Wing IDE Professional v 5.1.4). Устанавливаем, осматриваем папку. Главный исполняемый файл находится по адресу ./bin/wing.exe. Запустим его. Ругается на отсутствие Python, поэтому установим и его. Нужен версии 2 (на данный момент это версия 2.7.9). Снова запускаем программу. На этот раз предлагает установить патчи, и перезапуститься. Так и сделаем.
Теперь вылезает окошко с запросом лицензии (т.к. у нас про-версия). Введем какую-нибудь ерунду:
Получаем следующий ответ:
Что забавно: программа нам сама говорит длину ключа (20, не учитывая дефисов), и символы, с которых он должен начинаться. В принципе, с этого уже можно и начать исследовать защиту — найдем эту строчку в файлах программы.
Дальше — интереснее. Результат поиска нашелся в файле ./bin/2.7/src.zip!
Да-да. Все действительно так: программа идет с исходниками. В них-то нам и придется копаться.
Этап два: роемся в исходниках
Включим в Total Commander поиск по архивам, и найдем ту строку снова. Строка лежит в файле: ./bin/2.7/src.zip/process/wingctl.pyo. PYO-файлы представляют из себя бинарники с «оптимизированным» байт-кодом Python.
К нашему счастью, для Питона существует парочка декомпиляторов байт-кода. Чтобы не утруждать Вас поисками, дам ссылки на те, которые мне пригодились:
- Easy Python Decompiler (EPD) — оболочка, в которой зашиты два декомпилятора (Uncompyle2 и Decompyle++);
- Форк Uncompyle2 — иногда распаковывает то, что не могут распаковать другие.
Дожидаемся окончания процесса, и идем осматривать что получилось. А получились на выходе декомпилированные файлы с окончанием _dis. Их мы переименуем в .py. Все бы хорошо, но, выясняется, что имеются также файлы с окончанием _dis_failed, что говорит о том, что эти файлы декомпилятор не осилил. К счастью, файл только один: edit/editor.pyo_dis_failed
Попробуем на него натравить Decompyle++… Та же беда. Не зря я дал ссылку на запасной декомпилятор, т.к. именно он и сделал то, что не удалось другим. Теперь удалим все pyo/pyc файлы из папки src, а .py*_dis переименуем в .py.
Далее повторим все вышеописанное для архива opensource.zip, распаковав его в соседнюю одноименную папку. Архив external.zip я решил не трогать, т.к., осмотрев его, можно увидеть, что там лежат библиотеки, которые можно установить отдельно для нашего Питона. Так и сделаем:
pip install docutils
Этапы три и четыре: собственно исходный код. Отладка.
Порыскав по питоновским скриптам, я наткнулся на файлик wing.py в корне папки с программой. И, первый же комментарий нам подсказывает:
# Top level script for invoking Wing IDE. If --use-src is specified # as an arg, then the files in WINGHOME/src, WINGHOME/external, # WINGHOME/opensource will be used; otherwise, the files in the version # specific bin directory will be used if it exists.
В двух словах: если скрипту дать параметр —use-src, то при запуске будут использоваться исходники из папок src, external, opensource корневого каталога с Wing IDE (а не со скриптом).
Заглянув в корневую папку, я обнаружил еще одну папку src, и .py-файлы в ней. Подкинем их в нашу папку src, с перезаписью (здесь все таки оригиналы, а не декомпилированные файлы).
Теперь все три папки (указанные чуть выше), скопируем в корневой каталог программы. Попробуем подебажить…
Запускаем Wing IDE, и открываем в ней файл wing.py из каталога bin. Далее в меню Debug -> Debug Environment. в поле параметров указываем —use-src. Теперь стартанем дебаггер (клавиша F5). Если все махинации с копированиями папок прошли успешно, мы получим вторую копию запущенной Wing IDE. Прекрасно!
Далее: откроем в родительском Wing IDE тот файлик, в котором мы нашли ранее строку о плохом license id (wingctl.py), и поставим бряку до этого сообщения:
В отлаживаемом Wing IDE зайдем в меню Help -> Enter License. , и введем ключик согласно правилам (помните?: 20 символов, при том, первый из набора [‘T’, ‘N’, ‘E’, ‘C’, ‘1’, ‘3’, ‘6’]):
Жмем Continue и попадаем на бабки бряку. Первая же интересная функция: abstract.ValidateAndNormalizeLicenseID(id). Зайдем в нее по F7. Там еще одна: __ValidateAndNormalize(id). Зайдем и в нее.
Первая проверка на валидность:
for c in code: if c in ('-', ' ', '\t'): pass elif c not in textutils.BASE30: code2 += c badchars.add(c) else: code2 += c
Видим, что от нас требуют, чтобы символы License ID принадлежали набору textutils.BASE30:
BASE30 = '123456789ABCDEFGHJKLMNPQRTVWXY'
Вроде других проверок в __ValidateAndNormalize(id) нет. Исправляем введенный нами идентификатор и повторяем снова. Проверку на первый символ мы уже прошли:
if len(id2) > 0 and id2[0] not in kLicenseUseCodes: errs.append(_('Invalid first character: Should be one of %s') % str(kLicenseUseCodes))
А вот и второй символ:
if len(id2) > 1 and id2[1] != kLicenseProdCode:
kLicenseProdCodes = kLicenseProdCode = kLicenseProdCodes[config.kProductCode]
Т.к. у нас Professional версия, то второй символ должен быть N — исправляем, и возвращаемся. abstract.ValidateAndNormalizeLicenseID(id) прошелся без ошибок. Прекрасно. Упс:
if len(errs) == 0 and id[0] == 'T': errs.append(_('You cannot enter a trial license id here'))
Фиксим (я выбрал E), и продолжаем. Пробежавшись глазами ниже по коду, ничего дополнительно к предыдущим проверкам я не обнаружил, поэтому смело отпустил отладку далее по F5. Новое окно:
Вводим случайный текст, получаем сообщение об ошибке (опять 20 символов, и начинаться код активации должен с AXX), находим его в файлах, ставим бряку:
Первая функция проверки: abstract.ValidateAndNormalizeActivation(act). В ней снова проверка на принадлежность BASE30. Проверка на префикс, которую мы уже прошли:
if id2[:3] != kActivationPrefix: errs.append(_("Invalid prefix: Should be '%s'") % kActivationPrefix)
Следующее интересное место:
err, info = self.fLicMgr._ValidateLicenseDict(lic2, None) if err == abstract.kLicenseOK:
Заходим в self.fLicMgr._ValidateLicenseDict. Тут формируется хэш от лицензии:
lichash = CreateActivationRequest(lic) act30 = lic['activation'] if lichash[2] not in 'X34': hasher = sha.new() hasher.update(lichash) hasher.update(lic['license']) digest = hasher.hexdigest().upper() lichash = lichash[:3] + textutils.SHAToBase30(digest) errs, lichash = ValidateAndNormalizeRequest(lichash)
Если посмотреть на содержимое lichash после выполнения этого блока, можно заметить, что текст ее похож на request code, отображаемый в окошке ввода кода активации, хотя несколько цифр и отличается. Ладно, будем думать, что здесь имеют место быть какие-то рандомные части, не влияющие на активацию (что, кстати, далее подтвердится!).
Далее из кода активации отрезают три первых символа, убирают дефисы, преобразовывают в BASE16, и дополняют нулями, если нужно:
act = act30.replace('-', '')[3:] hexact = textutils.BaseConvert(act, textutils.BASE30, textutils.BASE16) while len(hexact) < 20: hexact = '0' + hexact
И вот оно, самое интересное:
valid = control.validate(lichash, lic['os'], lic['version'][:lic['version'].find('.')], hexact)
Какой-то control вызывает функцию validate, передавая ему lichash (request code), имя операционной системы, для которой делается ключ, версию программы, и преобразованный код активации. Почему я остановил на этом месте внимание? Дело в том, что этот control — это pyd-файл (в чем можно убедиться, добавив имя объекта в watch, и глянув поле __file__), которые представляют из себя обычные DLL с одной экспортируемой функцией (не validate), которая дает Питону информацию о том, что она умеет делать. Ну что же, давайте посмотрим на нее со стороны декомпилятора Hex Rays…
Этап пять: это уже не Python
Затащим в IDA Pro наш control (ctlutil.pyd) и посмотрим на экспортируемую функцию initctlutil:
int initctlutil()
off_10003094 представляет из себя структуру, в которой указаны имена и адрес экспортируемых методов. Вот и наш validate:
.data:100030A4 dd offset aValidate ; "validate" .data:100030A8 dd offset sub_10001410
Из всего кода, который содержит процедура sub_10001410 самым интересным выглядит этот:
if ( sub_10001020(v6, &v9) || strcmp(&v9, v7) )
Зайдем и в sub_10001020 тоже. Интересно было бы не на глаз давать имена переменным, а подебажить и обозвать их как следует. Так и сделаем. Настроим отладчик IDA Pro:
Думаю, все понятно из скриншота: мы указали приложение, которое в итоге будет подгружать наш pyd-файл.
Теперь ставим бряк на начало sub_10001020, и начинаем заглядывать в переменные и входные параметры. После непродолжительного процесса отладки приходим к такому вот листингу функции:
Код функции convert_reqest_key
int __usercall convert_reqest_key@(char *version@, const char *platform@, const char *activation_key, char *out_key) < unsigned int len_1; // edi@1 const char *platform_; // esi@1 char *version_; // ebx@1 int ver_; // eax@2 signed int mul1; // ecx@3 signed int mul2; // esi@3 signed int mul3; // ebp@3 bool v11; // zf@15 const char *act_key_ptr; // eax@31 char v13; // dl@32 const char *act_key_ptr_1; // eax@35 unsigned int len_2; // ecx@35 char v16; // dl@36 const char *act_key_ptr_2; // eax@39 unsigned int len_3; // ecx@39 char v19; // dl@40 int P3_; // ebx@42 const char *act_key_ptr_3; // eax@45 unsigned int len_4; // ecx@45 char v23; // dl@46 unsigned int P4; // ebp@47 signed int mul4; // [sp+10h] [bp-18h]@0 unsigned int P3; // [sp+14h] [bp-14h]@1 unsigned int P2; // [sp+18h] [bp-10h]@1 unsigned int P1; // [sp+1Ch] [bp-Ch]@1 len_1 = 0; platform_ = platform; version_ = version; P1 = 0; P2 = 0; P3 = 0; if ( !strcmp(platform, aWindows) ) < ver_ = (unsigned __int8)*version_; if ( *version_ == '2' ) < mul1 = 142; mul2 = 43; mul3 = 201; mul4 = 38; goto LABEL_31; >if ( (_BYTE)ver_ == '3' ) < mul1 = 23; mul2 = 163; mul3 = 2; mul4 = 115; goto LABEL_31; >if ( (_BYTE)ver_ == '4' ) < mul1 = 17; mul2 = 87; mul3 = 120; mul4 = 34; goto LABEL_31; >> else if ( !strcmp(platform_, aMacosx) ) < ver_ = (unsigned __int8)*version_; if ( *version_ == '2' ) < mul1 = 41; mul2 = 207; mul3 = 104; mul4 = 77; goto LABEL_31; >if ( (_BYTE)ver_ == '3' ) < mul1 = 128; mul2 = 178; mul3 = 104; mul4 = 95; goto LABEL_31; >if ( (_BYTE)ver_ == '4' ) < mul1 = 67; mul2 = 167; mul3 = 74; mul4 = 13; goto LABEL_31; >> else < v11 = strcmp(platform_, aLinux) == 0; LOBYTE(ver_) = *version_; if ( v11 ) < if ( (_BYTE)ver_ == '2' ) < mul1 = 48; mul2 = 104; mul3 = 234; mul4 = 247; goto LABEL_31; >if ( (_BYTE)ver_ == '3' ) < mul2 = 52; mul1 = 254; mul3 = 98; mul4 = 235; goto LABEL_31; >if ( (_BYTE)ver_ == '4' ) < mul1 = 207; mul2 = 45; mul3 = 198; mul4 = 189; goto LABEL_31; >> else < if ( (_BYTE)ver_ == '2' ) < mul1 = 123; mul2 = 202; mul3 = 97; mul4 = 211; goto LABEL_31; >if ( (_BYTE)ver_ == '3' ) < mul1 = 127; mul2 = 45; mul3 = 209; mul4 = 198; goto LABEL_31; >if ( (_BYTE)ver_ == '4' ) < mul2 = 4; mul1 = 240; mul3 = 47; mul4 = 98; goto LABEL_31; >> > if ( (_BYTE)ver_ == '5' ) < mul1 = 7; mul2 = 123; mul3 = 23; mul4 = 87; >else < mul1 = 0; mul2 = 0; mul3 = 0; >LABEL_31: act_key_ptr = activation_key; do v13 = *act_key_ptr++; while ( v13 ); if ( act_key_ptr != activation_key + 1 ) < do P1 = (P1 * mul1 + activation_key[len_1++]) & 0xFFFFF; while ( len_1 < strlen(activation_key) ); >act_key_ptr_1 = activation_key; len_2 = 0; do v16 = *act_key_ptr_1++; while ( v16 ); if ( act_key_ptr_1 != activation_key + 1 ) < do P2 = (P2 * mul2 + activation_key[len_2++]) & 0xFFFFF; while ( len_2 < strlen(activation_key) ); >act_key_ptr_2 = activation_key; len_3 = 0; do v19 = *act_key_ptr_2++; while ( v19 ); if ( act_key_ptr_2 != activation_key + 1 ) < P3_ = 0; do P3_ = (P3_ * mul3 + activation_key[len_3++]) & 0xFFFFF; while ( len_3 < strlen(activation_key) ); P3 = P3_; >act_key_ptr_3 = activation_key; len_4 = 0; do v23 = *act_key_ptr_3++; while ( v23 ); P4 = 0; if ( act_key_ptr_3 != activation_key + 1 ) < do P4 = (P4 * mul4 + activation_key[len_4++]) & 0xFFFFF; while ( len_4 < strlen(activation_key) ); >sprintf(out_key, a_5x_5x_5x_5x, P1, P2, P3, P4); return 0; >
А место вызова этой функции приобретает следующий вид:
if ( convert_reqest_key(version, platform, request_key, out_key) || strcmp(out_key, act_key_hash) )
Из этого всего можно сделать вывод, что request code преобразовывается с помощью функции convert_reqest_key и сравнивается затем с тем преобразованным кодом активации. Помните то преобразование?
Далее из кода активации отрезают три первых символа, убирают дефисы, преобразовывают в BASE16, и дополняют нулями, если нужно
- Дать выполниться функции преобразования convert_reqest_key;
- На месте выполнения strcmp высмотреть содержимое out_key;
- Убрать лишние нули в начале out_key;
- Преобразовать out_key обратно в BASE30;
- Дописать в начало получившейся строки убранные три символа (AXX);
- По желанию навтыкать дефисов через каждые пять символов.
print("AXX" + textutils.BaseConvert("FCBCFEFD2FF684FA6A4F", textutils.BASE16, textutils.BASE30))
На выходе получил ключик:
wingide — 2015/05/24 04:03:47 — AXX3Q6BQHKQ773D24P58
Введя его в поле ввода ключа активации, получил заветное:
ИТОГИ
Как видите, процесс взлома не столько сложный, сколько интересный получился! Исследовать свои же исходники в скомпилированном их варианте… это, конечно, забавно.
Не знаю, зачем авторы приложили к своей программе ее исходники (хоть и в большинстве своем, в виде байт-кода). Но, думаю, вы понимаете, что так делать не стоит!
Какой Лучший Python IDE: Сравниваем Ваши Варианты
Какой лучший Python IDE? Взгляните на все варианты и сравните их в подробном руководстве. Узнайте, какая среда разработки Python подходит вам лучше всего!
Обновлено: December 15, 2022
Выбор хорошего Python IDE (интегрированной среды разработки) может сослужить вам хорошую службу. Предоставляя все необходимые инструменты для разработки приложения, она экономит вам время и упрощает вашу повседневную жизнь. Многие базовые задачи могут быть автоматизированы - зачем делать их вручную, когда вы можете уделить время улучшению уникальных функций вашего проекта?
Однако для первого вашего шага, который является выбором лучшего IDE Python, автоматизации провести не получится. Вам придётся выбирать вручную. Тем не менее, мы попытаемся представить вам самые стоящие варианты в этом подробном руководстве.
Среда Разработки Python Против Редактора Кода
Перед тем как мы начнём выбирать лучшие IDE для Python, нам необходимо уточнить различия между IDE и редактором кода. Этот вопрос мучает множество новичков. Оба эти термина представляют собой компьютерную программу и каждую из них можно использовать для разработки приложений. Тогда, что именно их различает?
Проще говоря, редактор кода является небольшой программой, позволяющей вам писать ваш код. Это по сути текстовый редактор с несколькими дополнительными функциями, вроде подсветки синтаксиса и показа рекомендаций. Некоторые из них имеют дополнительный встроенный функционал, вроде терминала или отладчика. Но на этом всё ограничивается. Интегрированная среда разработки (IDE) содержит редактор кода плюс тонну других инструментов. Они могут помочь вам в процедуре разработки, управлении проектом и так далее. IDE обычно идут с различными библиотеками, что позволяет вам проще писать ваш код.
Самые Полюбившиеся Статьи
Ищете более подробную информацию по какой-либо связанной теме? Мы собрали похожие статьи специально, чтобы вы провели время с пользой. Взгляните!
Что Такое Дополненная Реальность: Разбираемся в Работе AR
Понимание, что такое дополненная реальность будет важным для изучения новейших технологий. Прочитайте руководство, чтобы узнать необходимую информацию!
Как Стать Учителем: Со Степенью и Без Неё
Мечтаете стать преподавателем? Узнайте, как стать учителем со степенью и даже без неё, а также быть частью сообщества учителей.
Python Или C++: Что Лучше? Давайте Узнаем!
После прочтения этой статьи у вас сложится полное понимание того, какой язык программирования вам лучше выбрать Python или C++.
IDLE: Для Ваших Первых Шагов
IDLE часто рекомендуется в качестве лучшего Python IDE для новичков: даже его название говорит само за себя Интегрированная Разработка и Среда Обучения. Она написана полностью на Python и хорошо работает на Windows, macOS и Unix. IDLE не только бесплатный вариант IDE Python, но также идёт со встроенным Python с конца 1998 года. Это означает, что вам не нужно проводить какие-либо дополнительные установки и настройки!
Используя IDLE, вы получаете простой и удобный в использовании редактор кода со всем базовым функционалом (подсветкой синтаксиса, автоматическими отступами, автозавершением и так далее). После того как вы закончите писать код, вам будет доступно исправление ошибок и выполнение кода. С IDLE также возможно использовать некоторые расширения, но их не так много, по сравнению с другими популярными средами разработки Python. Хотя это вполне логично, так как IDLE в основном нацелен на начинающих разработчиков. Продвинутые пользователи обычно критикуют его за различные проблемы с использованием, вроде потери фокуса или отсутствия нумерования строк.
PyCharm: Функции За Деньги
JetBrains впервые представил PyCharm IDE в 2010 году. Три года спустя они также выпустили версию для сообщества. В отличие от профессиональной, она бесплатна и имеет открытый исходный код. Однако это также означает наличие определённых ограничений в функциональности. Профессиональная версия имеет тридцатидневный пробный период - после этого, она будет стоить 220 долларов в год или около 10 долларов в месяц. PyCharm на данный момент находится на версии 2020.2 и бета версия 2023.3 уже была выпущена. Вы можете использовать этот Python IDE на Linux, Windows и macOS. Пользовательский интерфейс полностью настраиваемый, плюс, у него широкий выбор плагинов, если вы захотите расширить его функционал.
PyCharm смело можно добавить в список лучшие IDE для Python благодаря его функциям помощи в коде. Он имеет не только отличные функции подсветки синтаксиса и ошибок в коде, но также предлагает быстрое исправление и удобные инструменты навигации. Помимо Python, PyCharm также поддерживает и мгновенно распознаёт HTML, CSS, JavaScript, TypeScript и CoffeScript. Функция редактирования в реальном времени позволяет вам заранее увидеть какие изменения оказывает ваш код на конечный результат.
Отладчик, терминал и средство запуска тестов, всё это идёт интегрированным в PyCharm. С профессиональной версией вы также получаете несколько научных инструментов, а также поддержку самых популярных систем управления базами данных и фреймворков программирования.
Spyder: Для Вашего Внутреннего Учёного
Давайте сразу же с главного: Spyder явно не лучший Python IDE для новичков. а также для большинства разработчиков. Хотя данный IDE является непревзойдённым выбором для тех, кто увлечён научными исследованиями. Изначально выпущенный в 2009 году, Spyder представлял из себя Научную Среду Разработки Python. Она специально разрабатывалась для аналитиков данных, инженеров и учёных различных сфер. Spyder абсолютно бесплатна для скачивания на Windows, macOS и Linux, но вы можете добровольно сделать пожертвование разработчикам.
Также как и множество хорошо сделанных сред разработки Python, Spyder IDE имеет простой и полезный редактор кода, отладчик, историю логов и встроенную консоль. В дополнение к этому она имеет несколько функций, нацеленных специально на научную аудиторию, вроде нескольких консолей IPython, статический анализ кода и панель обозревателя уникальных переменных. Что касается графического пользовательского интерфейса (GUI), Spyder использует фреймворк Qt, написанный на C++.
Разнообразие научных пакетов, вроде NumPy или SciPy, которые сразу же интегрированы в Spyder. Если этого будет не достаточно, то вы можете выбрать из широкого разнообразия аддонов и получить ещё больший функционал - например интеграцию фреймворка модульного тестирования или улучшенное управление памятью. Однако обратите внимание, что даже лучшие IDE для Python будут иметь сниженную производительность, если вы перегрузите их слишком большим количеством плагинов.
Wind: Понемногу Для Всех
Изначально выпущенная для Linux в 2000 году, Wing IDE теперь имеет три версии: Wing Pro, Wing Personal и Wing 101. Какую бы вы не выбрали, вы сможете использовать данную IDE Python на Windows, macOS и Linux. Wing Pro является коммерческим продуктом, предназначенным для профессионального использования. После того как закончится тридцатидневный пробный период, лицензия на одну программу обойдётся вам в $179 в год или же вам предлагается единовременный платёж $245 (обновления не включены).
Wing Personal и Wing 101 являются бесплатными IDE для Python. В результате чего, у них более ограниченный функционал. Wing 101 является самой базовой версией, которая предназначена для новичков. Она предоставляет вам самые необходимые инструменты: простой редактор кода, базовый отладчик и функцию поиска. Студенты и любители, которые используют Wing Personal получают дополнительный функционал редактора (например, сворачивание кода и множественный выбор), а также некоторые инструменты управления проектом.
С версией Pro в дело вступают более мощные функции. Лицензированные пользователи могут использовать поддерживаемые фреймворки, выполнять модульное тестирование и рефакторинг. Вы также получите интегрированные системы контроля версий, включая Git, CVS и Bazaar. Так как исходный код также станет для вас доступен, вы сможете самостоятельно расширять функционал, используя скрипты Python. Wing Pro также считается лучшим Python IDE для отладки кода, так как позволяет проводить удалённые и многопоточные процессы отладки.
Использование PyDev с Eclipse
Рассматривая лучшие IDE для Python, вы также должны взглянуть на PyDev - хотя на самом деле это не совсем IDE. Слишком сложно? Позвольте мне объяснить.
В 2001 году команда IBM выпустила Eclipse IDE, которая на данный момент имеет версию 4.13. Её основным преимуществом являлась расширяемость. Используя мощную систему плагинов, вы можете создавать действительно внушительные пользовательские IDE для ваших проектов. Некоторые плагины даже предоставляют Eclipse IDE поддержку дополнительных языков. Одним из них является ранее упомянутый PyDev. Его установка позволяет вам использовать Eclipse в качестве бесплатного Python IDE. Также как и Spyder, PyDev принимает добровольные пожертвования на платформе Patreon.
Самая последняя версия PyDev 7.4, которая не только поддерживает Python 3.8, но также Jython и IronPython. Вы можете изменять, выполнять и проводить отладку вашего кода в интерактивной консоли. Также как и с большинством сред разработки Python, вы получаете редактор кода с подсветкой синтаксиса, сворачивание кода, умные отступы, ассистента, инструменты завершения кода и так далее. Отладчик поддерживает несколько потоков, простые и условные точки останова, наблюдение за выражениями и отображение переменных.
Но PyDev имеет некоторые проблемы с документацией: довольно сложно найти то, что вам нужно. FAQ не имеет никаких категорий, и для любого вопроса вам придётся использовать StackOverflow, пользователи которого, в свою очередь, довольно часто отправят вас "искать что-то в Интернете". Учитывая относительно сложный процесс установки, это довольно серьёзный недостаток.
Самые Популярные Статьи
Взгляните на нашу коллекцию руководств, статей и уроков про платформы для онлайн обучения и массовые открытые онлайн курсы. Всегда будьте в курсе и принимайте взвешенные решения!
Что Должен Знать Системный Аналитик? Вопросы Для Интервью
Что должен знать системный аналитик SAS? Вопросы для интервью на должность системного аналитика, на которые кандидат должен знать ответ
Самые Популярные CMS: Различные Системы Управления Содержимым и Их Преимущества
Ищете лучшие и популярные CMS для вашего нового проекта? Взгляните на этот список систем управления содержимым и их возможности. Выберите лучшую CMS для сайта!
JavaScript Учебник: 10 Способов Улучшить Свой JavaScript
Ищете хороший JavaScript учебник? Узнайте, где можно найти уроки JavaScript и изучить основы JavaScript. JavaScript учебник: 10 источников!
Лучший Python IDE: Нашли Ли Мы Её?
Список претендентов на корону лучшего Python IDE довольно длинный. Мы не можем вместить все варианты в одном руководстве. Однако мы попытались предложить вам самые популярные как платные, так и бесплатные варианты.
Выбор подходящего Python IDE в действительности зависит от ваших потребностей и ожиданий. Если вы не против платить за профессиональное программное обеспечение, взгляните на PyCharm и Wing Pro. PyDev также имеет свои преимущества и недостатки. И опять же, его стоит попробовать, если вы уже знакомы с Eclipse IDE и её сложностями. Что касается гиков науки, то ваш выбор будет весьма очевидным: вам нужна среда разработки Python Spyder, чтобы начать разрабатывать ваши удивительные проекты.
Если вы новичок, то IDLE или Wing 101 может стать отличной стартовой точкой. Эти программы лёгкие, а также они не будут пугать вас всей сложностью. И если у вас есть сомнения в вашем знании Python, то не забудьте укрепить их с онлайн курсами BitDegree - также как и у Wing, у нас есть что-то для каждого!
Оставьте ваше честное мнение
Оставьте ваше честное мнение и помогите тысячам людей выбрать лучшую платформу для онлайн обучения. Все отзывы, позитивные или негативные, будут приниматься, если они честны. Мы не публикуем предвзятые отзывы и спам. Поэтому, если вы хотите поделиться вашим опытом, мнением или дать совет - у вас есть всё необходимое!