Как установить библиотеку в wing
Windows
Скачайте инсталлятор по этой ссылке.
Запустите инсталлятор.
Mac OS
Скачайте инсталлятор по этой ссылке.
Установку необходимо производить в стандартную папку (не на диск C).
Для запуска инсталлятора наберите в консоли «python3».
Процесс установки аналогичен установке в Windows.
После запуска инсталлятора в первом окне выберите пункт меню Customize installation.

На следующем шаге нажмите Next.

На следующем экране изменить путь к программе на: «C:\Python35».
Нажмите кнопку Install.

В последнем окне нажмите кнопку Close.
Установка Wing IDE
Windows
Скачайте инсталлятор по этой ссылке.
Запустите инсталлятор.
Mac OS
Скачайте инсталлятор по этой ссылке.
Для установки перетащите файл в папку «Программы».
Установка и настройка Wing IDE в Windows
При установке Wing IDE рекомендуем согласиться со всеми параметрами установки. Ничего изменять не требуется.
После установки рекомендуем вывести ярлык Wing IDE на рабочий стол.
Далее необходимо запустить Wing IDE и произвести настройки параметров.
При первом запуске необходимо согласиться с лицензионным соглашением, нажав на кнопку Accept:

Нажмите на пункт меню Edit -> Configure Python.

Произведите настройки так, как показано на рисунке.
Выберите вариант Custom в первых 2-х настройках.
Задайте пусть к интерпретатору Python, который вы установили.
Нажмите на кнопку Insert. Задайте путь к папке с Python.
Примените настройки, нажав на кноку OK.


Перейдите в раздел Files и задайте кодировку utf-8 как показано на рисунке:

Перейдите в раздел I/O и задайте кодировку utf-8:

Настройка Wing IDE в Mac OS
При первом запуске Wing IDE необходимо согласиться с лицензионным соглашением, нажав на кнопку Accept.
Нажмите на пункт меню Edit -> Configure Python.
Произведите настройки так, как показано на рисунке.
Выберите вариант Custom в первой настройке.
Задайте пусть к интерпретатору Python, который вы установили.
Примените настройки, нажав на кноку OK.

Поздравляем, все готово для программирования на Python!
Исследование защиты 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 — с PIP и без
Прежде чем что-то устанавливать, давайте разберёмся, что такое пакет, чем он отличается от модуля, и как с ним работать. У слова «пакет» применительно к Python два значения.
C одной стороны, пакеты Python — это Py-приложения, дополнения или утилиты, которые можно установить из внешнего репозитория: Github, Bitbucket, Google Code или официального Python Package Index. На сервере пакеты хранятся в .zip и .tar архивах, либо в дополнительной упаковке — «яйцах» (.egg, старый формат) или «колесах» (.whl). В составе пакета, как правило, есть сценарий установки setup.py, который хранит сведения о зависимостях — других пакетах и модулях, без которых пакет работать не будет.
Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!
Скачивайте и используйте уже сегодня:

Павел Симонов
Исполнительный директор Geekbrains
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Получить подборку бесплатно
Уже скачали 26918
С другой стороны, если речь об архитектуре Python-приложения, пакет — это каталог, внутри которого файл __init__.py и, опционально, другие каталоги и файлы .py. Так большую Python-программу разбивают на пакеты и модули. Модуль — файл с исходным кодом, который можно использовать в других приложениях: как «заготовку» для будущих проектов или как часть библиотеки/фреймворка. Но к теме статьи это прямого отношения не имеет, поэтому дальше мы будем говорить только о пакетах из репозиториев.
Чтобы за секунды устанавливать пакеты со всеми зависимостями, используют менеджер пакетов pip или модуль easy_install. В большинстве случаев рекомендуется использовать pip. И только если у вас есть инфраструктура на пакетах .egg, которые pip не открывает, нужен easy_install.
Установка PIP для Python 3 и 2
Если вы используете виртуальные окружения на базе venv или virtualenv, pip уже установлен. Начиная с Python 3.4 (для Python 2 — с версии 2.7.9) pip поставляется вместе с интерпретатором. Для более ранних версий устанавливать менеджер пакетов нужно вручную. Вариантов два:
- C помощью скрипта get_pip.py — быстро.
- Через setuptools — кроме pip сможем использовать easy_install.
Вариант 1. Скачиваем скрипт get_pip.py и запускаем в консоли. Для этого открываем терминал через Win+R>»cmd»>OK и пишем:
Остальное установщик сделает сам: если нужно, попутно установит wheel (для распаковки .whl-колес) и setuptools. Чтобы запретить инсталляцию дополнительных инструментов, можно добавить в строку ключи —no-setuptools и/или —no-wheels.
Для вас подарок! В свободном доступе до 17.03 -->
Скачайте ТОП-10
бесплатных нейросетей
для программирования
Помогут писать код быстрее на 25%
Чтобы получить подарок, заполните информацию в открывшемся окне
Если возникает ошибка, путь к Python не прописан в переменной среды $PATH. Нужно либо найти эту переменную в системном реестре и задать её значение, либо каждый раз указывать полный путь до python.exe, а за ним уже имя исполняемого Py-файла:
Полный путь полезен и в том случае, если у вас на компьютере несколько версий Python и вы ставите пакет для одной из них.
Вариант 2. Скачиваем архив с setuptools из PYPI и распаковываем в отдельный каталог. В терминале переходим в директорию setuptools c файлом setup.py и пишем:
python setup.py install
Обновить pip для Python в Windows можно так:
python pip install -U pip
Если это не работает, нужно добавить путь к папке с pip в $PATH.
Установка пакета в pip
Пора запустить pip в Python и начать устанавливать пакеты короткой командой из консоли:
pip install имя_пакета
При установке в Windows, перед pip нужно добавить «python -m».
Обновить пакет не сложнее:
pip install имя_пакета -U
Если у вас последняя версия пакета, но вы хотите принудительно переустановить его:
pip install --force-reinstall
Дарим скидку от 60%
на обучение «Python-разработчик» до 17 марта
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

Посмотреть список установленных пакетов Python можно с помощью команды:
Найти конкретный пакет по имени можно командой «pip search». О других командах можно прочесть в справке, которая выдается по команде «pip help».
Удаление пакета Python
Когда пакет больше не нужен, пишем:
pip uninstall имя_пакета
Как установить пакеты в Python без pip
Формат .egg сейчас используют не часто, поэтому pip его не поддерживает. Модуль easy_install умеет устанавливать как .egg, так и обычные пакеты, но есть у него важные минусы:
- он не удаляет пакеты,
- он может пытаться установить недозагруженный пакет.
Только до 14.03
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:

ТОП-100 площадок для поиска работы от GeekBrains

20 профессий 2023 года, с доходом от 150 000 рублей

Чек-лист «Как успешно пройти собеседование»
Чтобы зарегистрироваться на бесплатный интенсив и получить в подарок подборку файлов от GeekBrains, заполните информацию в открывшемся окне
Использовать easy_install можно сразу после установки setuptools. Хранится модуль в папке Scripts вашего интерпретатора. Если у вас в $PATH верно прописан путь, ставить пакеты из PYPI можно короткой командой:
Для обновления после install и перед именем пакета нужно ставить ключ -U. Откатиться до нужной версии можно так:
Если нужно скачать пакет из альтернативного источника, вы можете задать URL или локальный адрес на компьютере:
Чтобы узнать об опциях easy_install, запустим его с ключом -h:
Список пакетов, установленных через easy_install, хранится в файле easy-install.pth в директории /libs/site-packages/ вашего Python.
К счастью, удалять установленные через easy_install пакеты можно с помощью pip. Если же его нет, потребуется удалить пакет вручную и стереть сведения о нем из easy-install.pth.
Теперь вы умеете ставить и удалять пакеты для вашей версии Python.
Wing Python 7, IDE для Python, доступная через Snap
В следующей статье мы рассмотрим Wing Python IDE, которая в версии 7 уже доступна в виде пакета оснастки для установки в Ubuntu. Это IDE, разработанная Wingware и предназначенная для языка программирования Python. Wing Python IDE 7 теперь можно легко установить через пакет Snap в Ubuntu 16.04, Ubuntu 18.04, Ubuntu 18.10 и Ubuntu 19.04. Эта интегрированная среда разработки (IDE) была разработана для сокращения времени разработки и отладки, а также предлагает хорошую помощь при кодировании или обнаружении ошибок в коде. Он стремится облегчить навигацию и понимание кода Python.
Официальные наборы снимков Wing 7 Они доступны в трех разных версиях: Крыло Pro, который является коммерческой версией со всеми доступными функциями. Эта версия особенно подходит для профессиональных программистов. Мы также найдем доступные Крыло Персональное, Который является Бесплатная версия и что в нем отсутствуют некоторые функции, доступные в коммерческой версии. Это ориентировано на студентов и болельщиков. Последняя доступная версия Крыло 101, Это Бесплатная версия очень упрощенный, предназначен для обучения начинающих программистов.
В этой новой версии Wing 7 имеет улучшения по сравнению с предыдущими версиями. Среди них мы можем найти улучшенную систему контроль предупреждений и качества кода.

Теме статьи:
Wing, среда разработки, предназначенная для Python
В эту новую версию также добавлены новый фрейм данных, простая встроенная визуализация данных отладки с помощью Shift-Space или улучшенная визуализация данных стека. Мы также найдем новые вызовы для поиска и других функций навигации, некоторые улучшенные закладки, расширенный режим презентации и т. Д.
Некоторые общие характеристики Wing Python 7

- Через некоторые функции будет легче увидеть указанный текст.
- У нас будет четыре новые цветовые палитры; Дракула, Позитроник, Вишневый цвет и Солнечная сталь.
- Улучшения в просмотрщике массивов и вьювере кадров.
- Wing включает шрифты для улучшить парсинг стандартной библиотеки Python и некоторые сторонние модули.
- Это было улучшенный отладчик.
- Крыло 7 добавляет меню настройки высокого уровня в правом верхнем углу окна. Это меню призвано упростить переключение в темный режим, изменение настроек клавиатуры для эмуляции редактора, отображение и скрытие панели инструментов и внести другие общие изменения конфигурации.
- Из меню конфигурации мы также можем использовать режим презентации. Это расширяет пользовательский интерфейс на предварительно настроенный коэффициент масштабирования, чтобы сделать его более заметным во время собраний и разговоров. Кроме того, он также поддерживает экран с высоким разрешением.
- Добавлен новый менеджер обновлений. После первоначальной установки Wing 7 можно обновить до более новых версий без загрузки установщика.
- Улучшено восстановление визуального статуса в редакторах для файлов, которые изменяются вне поддержки Wing.
- Крыло сейчас работает на Qt 5.10.

Это лишь некоторые особенности новой версии. Они могут проверить все особенности последней версии этой IDE в Ваш сайт.
Установите Wing Python как мгновенный пакет
к Ubuntu 18.04 и вышеВсе, что вам нужно сделать, это найти и установить пакет Wing snap из Опция программного обеспечения Ubuntu:

Если вы используете Ubuntu 16.04сначала откройте терминал (Ctrl + Alt + T) и выполните следующую команду, чтобы сначала установите snapd.
sudo apt install snapd
После установить Personal Wing 7 используя команду:
sudo snap install --classic wing-personal7
Заменяет wing-personal7 в последней команде с wing7 для установки Wing Pro или крыло-101-7 установить самую простую версию из всех.
деинсталляция
Чтобы удалить эту IDE для Python, используйте опцию программного обеспечения Ubuntu или запустите в терминале (Ctrl + Alt + T):
sudo snap remove wing-personal7
В этой команде вы также должны заменить wing-personal7 на wing7 или wing-101-7 в зависимости от установленной вами версии.
Для получения дополнительной информации о том, как работать с этой IDE, вы можете обратитесь к документации которые разработчики делают доступными для пользователей на своих веб-сайтах. Эта же справка также будет доступна через меню справки, которое сопровождает программу.
Полный путь к статье: Убунлог » Ubuntu » Wing Python 7, IDE для Python, доступная через Snap
Будьте первым, чтобы комментировать