Как установить библиотеку в wing
Перейти к содержимому

Как установить библиотеку в wing

  • автор:

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

крыло настройки Python 7

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

крыло python 7 работает

Это лишь некоторые особенности новой версии. Они могут проверить все особенности последней версии этой 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, вы можете обратитесь к документации которые разработчики делают доступными для пользователей на своих веб-сайтах. Эта же справка также будет доступна через меню справки, которое сопровождает программу.

Будьте первым, чтобы комментировать

Исследование защиты 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.

К нашему счастью, для Питона существует парочка декомпиляторов байт-кода. Чтобы не утруждать Вас поисками, дам ссылки на те, которые мне пригодились:

  1. Easy Python Decompiler (EPD) — оболочка, в которой зашиты два декомпилятора (Uncompyle2 и Decompyle++);
  2. Форк 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, и дополняют нулями, если нужно

  1. Дать выполниться функции преобразования convert_reqest_key;
  2. На месте выполнения strcmp высмотреть содержимое out_key;
  3. Убрать лишние нули в начале out_key;
  4. Преобразовать out_key обратно в BASE30;
  5. Дописать в начало получившейся строки убранные три символа (AXX);
  6. По желанию навтыкать дефисов через каждые пять символов.
print("AXX" + textutils.BaseConvert("FCBCFEFD2FF684FA6A4F", textutils.BASE16, textutils.BASE30)) 

На выходе получил ключик:

wingide — 2015/05/24 04:03:47 — AXX3Q6BQHKQ773D24P58

Введя его в поле ввода ключа активации, получил заветное:

ИТОГИ

Как видите, процесс взлома не столько сложный, сколько интересный получился! Исследовать свои же исходники в скомпилированном их варианте… это, конечно, забавно.

Не знаю, зачем авторы приложили к своей программе ее исходники (хоть и в большинстве своем, в виде байт-кода). Но, думаю, вы понимаете, что так делать не стоит!

Введение в библиотеку pandas: установка и первые шаги / pd 1

Библиотека pandas в Python — это идеальный инструмент для тех, кто занимается анализом данных, используя для этого язык программирования Python.

В этом материале речь сначала пойдет об основных аспектах библиотеки и о том, как установить ее в систему. Потом вы познакомитесь с двумя структурам данных: series и dataframes . Сможете поработать с базовым набором функций, предоставленных библиотекой pandas, для выполнения основных операций по обработке. Знакомство с ними — ключевой навык для специалиста в этой сфере. Поэтому так важно перечитать материал до тех, пока он не станет понятен на 100%.

А на примерах сможете разобраться с новыми концепциями, появившимися в библиотеке — индексацией структур данных. Научитесь правильно ее использовать для управления данными. В конце концов, разберетесь с тем, как расширить возможности индексации для работы с несколькими уровнями одновременно, используя для этого иерархическую индексацию.

Библиотека Python для анализа данных

Pandas — это библиотека Python с открытым исходным кодом для специализированного анализа данных. Сегодня все, кто использует Python для изучения статистических целей анализа и принятия решений, должны быть с ней знакомы.

Библиотека была спроектирована и разработана преимущественно Уэсом Маккини в 2008 году. В 2012 к нему присоединился коллега Чан Шэ. Вместе они создали одну из самых используемых библиотек в сообществе Python.

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

Этот пакет Python спроектирован на основе библиотеки NumPy. Такой выбор обуславливает успех и быстрое распространение pandas. Он также пользуется всеми преимуществами NumPy и делает pandas совместимой с большинством другим модулей.

Еще одно важное решение — разработка специальных структур для анализа данных. Вместо того, чтобы использовать встроенные в Python или предоставляемые другими библиотеками структуры, были разработаны две новых.

Они спроектированы для работы с реляционными и классифицированными данными, что позволяет управлять данными способом, похожим на тот, что используется в реляционных базах SQL и таблицах Excel.

Дальше вы встретите примеры базовых операций для анализа данных, которые обычно используются на реляционных или таблицах Excel. Pandas предоставляет даже более расширенный набор функций и методов, позволяющих выполнять эти операции эффективнее.

Основная задача pandas — предоставить все строительные блоки для всех, кто погружается в мир анализа данных.

Установка pandas

Простейший способ установки библиотеки pandas — использование собранного решения, то есть установка через Anaconda или Enthought.

Установка в Anaconda

В Anaconda установка занимает пару минут. В первую очередь нужно проверить, не установлен ли уже pandas, и если да, то какая это версия. Для этого введите следующую команду в терминале:

conda list pandas 

Если модуль уже установлен (например в Windows), вы получите приблизительно следующий результат:

# packages in environment at C:\Users\Fabio\Anaconda: # pandas 0.20.3 py36hce827b7_2 

Если pandas не установлена, ее необходимо установить. Введите следующую команду:

conda install pandas 

Anaconda тут же проверит все зависимости и установит дополнительные модули.

Solving environment: done ## Package Plan ## Environment location: C:\Users\Fabio\Anaconda3 added / updated specs: - pandas The following new packages will be installed: Pandas: 0.22.0-py36h6538335_0 Proceed ([y]/n)? Press the y key on your keyboard to continue the installation. Preparing transaction: done Verifying transaction: done Executing transaction: done 

Если требуется обновить пакет до более новой версии, используется эта интуитивная команда:

conda update pandas 

Система проверит версию pandas и версию всех модулей, а затем предложит соответствующие обновления. Затем предложит перейти к обновлению.

Установка из PyPI

Pandas можно установить и с помощью PyPI, используя эту команду:

pip install pandas 

Установка в Linux

Если вы работаете в дистрибутиве Linux и решили не использовать эти решения, то pandas можно установить как и любой другой пакет.

В Debian и Ubuntu используется команда:

sudo apt-get install python-pandas 

А для OpenSuse и Fedora — эта:

zypper in python-pandas 

Установка из источника

Если есть желание скомпилировать модуль pandas из исходного кода, тогда его можно найти на GitHub по ссылке https://github.com/pandas-dev/pandas:

git clone git://github.com/pydata/pandas.git cd pandas python setup.py install 

Убедитесь, что Cython установлен. Больше об этом способе можно прочесть в документации: (http://pandas.pydata.org/pandas-docs/stable/install.html).

Репозиторий для Windows

Если вы работаете в Windows и предпочитаете управлять пакетами так, чтобы всегда была установлена последняя версия, то существует ресурс, где всегда можно загрузить модули для Windows: Christoph Gohlke’s Python Extension Packages for Windows (www.lfd.uci.edu/~gohlke/pythonlibs/). Каждый модуль поставляется в формате WHL для 32 и 64-битных систем. Для установки нужно использовать приложение pip:

pip install SomePackage-1.0.whl 

Например, для установки pandas потребуется найти и загрузить следующий пакет:

pip install pandas-0.22.0-cp36-cp36m-win_amd64.whl 

При выборе модуля важно выбрать нужную версию Python и архитектуру. Более того, если для NumPy пакеты не требуются, то у pandas есть зависимости. Их также необходимо установить. Порядок установки не имеет значения.

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

Проверка установки pandas

Библиотека pandas может запустить проверку после установки для верификации управляющих элементов (документация утверждает, что тест покрывает 97% всего кода).

Во-первых, нужно убедиться, что установлен модуль nose . Если он имеется, то тестирование проводится с помощью следующей команды:

nosetests pandas 

Оно займет несколько минут и в конце покажет список проблем.

Модуль Nose

Этот модуль спроектирован для проверки кода Python во время этапов разработки проекта или модуля Python. Он расширяет возможности модуль unittest . Nose используется для проверки кода и упрощает процесс.

Здесь о нем можно почитать подробнее: _http://pythontesting.net/framework/nose/nose-introduction/.

Первые шаги с pandas

Лучший способ начать знакомство с pandas — открыть консоль Python и вводить команды одна за одной. Таким образом вы познакомитесь со всеми функциями и структурами данных.

Более того, данные и функции, определенные здесь, будут работать и в примерах будущих материалов. Однако в конце каждого примера вы вольны экспериментировать с ними.

Для начала откройте терминал Python и импортируйте библиотеку pandas. Стандартная практика для импорта модуля pandas следующая:

>>> import pandas as pd >>> import numpy as np 

Теперь, каждый раз встречая pd и np вы будете ссылаться на объект или метод, связанный с этими двумя библиотеками, хотя часто будет возникать желание импортировать модуль таким образом:

>>> from pandas import * 

В таком случае ссылаться на функцию, объект или метод с помощью pd уже не нужно, а это считается не очень хорошей практикой в среде разработчиков Python.

Как устанавливать пакеты в 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

Павел Симонов
Исполнительный директор Geekbrains

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

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

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

Получить подборку бесплатно
Уже скачали 27937

С другой стороны, если речь об архитектуре 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 поставляется вместе с интерпретатором. Для более ранних версий устанавливать менеджер пакетов нужно вручную. Вариантов два:

  1. C помощью скрипта get_pip.py — быстро.
  2. Через setuptools — кроме pip сможем использовать easy_install.

Вариант 1. Скачиваем скрипт get_pip.py и запускаем в консоли. Для этого открываем терминал через Win+R>»cmd»>OK и пишем:

Остальное установщик сделает сам: если нужно, попутно установит wheel (для распаковки .whl-колес) и setuptools. Чтобы запретить инсталляцию дополнительных инструментов, можно добавить в строку ключи —no-setuptools и/или —no-wheels.

Для вас подарок! В свободном доступе до 05.05 -->
Скачайте ТОП-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-разработчик» до 05 мая
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

Посмотреть список установленных пакетов Python можно с помощью команды:

Найти конкретный пакет по имени можно командой «pip search». О других командах можно прочесть в справке, которая выдается по команде «pip help».

Удаление пакета Python

Когда пакет больше не нужен, пишем:

pip uninstall имя_пакета

Как установить пакеты в Python без pip

Формат .egg сейчас используют не часто, поэтому pip его не поддерживает. Модуль easy_install умеет устанавливать как .egg, так и обычные пакеты, но есть у него важные минусы:

  • он не удаляет пакеты,
  • он может пытаться установить недозагруженный пакет.

Только до 2.05
Скачай подборку материалов, чтобы гарантированно найти работу в 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *