Перейти к содержимому

Как обновить pip в python

  • автор:

Устанавливаем python-пакеты с помощью pip

Python 3 логотип

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

Установка pip

Прежде чем с помощью pip устанавливать python-пакеты, нужно сначала установить сам pip.

Python 3.4+

Начиная с Python версии 3.4, pip поставляется вместе с интерпретатором python.

Python

  • Загрузить get-pip.py (обязательно сохранив с расширением .py).
  • Запустить этот файл (могут потребоваться права администратора).

Есть ещё один способ (для Windows). Возможно, он является более предпочтительным:

  • Установить setuptools http://www.lfd.uci.edu/~gohlke/pythonlibs/#setuptools
  • Установить pip http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip

Начало работы

Попробуем с помощью pip установить какой-нибудь пакет, например, numpy:

sudo pip3 install numpy
pip3 install numpy

Может не сработать, написав: «python» не является внутренней или внешней командой, исполняемой программой или пакетным файлом (такого, скорее всего, не должно быть при установке pip вторым способом, но проверить не на чем).

Тогда нужно обращаться напрямую:

Либо добавлять папку C:\Python34\Tools\Scripts\ в PATH вручную (самому проверить не на чем, можете посмотреть на stackoverflow. У кого получится — напишите в комментарии).

Что ещё умеет делать pip

Пробежимся по основным командам pip:

pip help — помощь по доступным командам.

pip install package_name — установка пакета(ов).

pip uninstall package_name — удаление пакета(ов).

pip list — список установленных пакетов.

pip show package_name — показывает информацию об установленном пакете.

pip search — поиск пакетов по имени.

pip —proxy user:passwd@proxy.server:port — использование с прокси.

pip install -U — обновление пакета(ов).

pip install —force-reinstall — при обновлении, переустановить пакет, даже если он последней версии.

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Установка pip — Python: Настройка окружения

Если вы устанавливали Python на macOS или Windows по нашим рекомендациям, то pip будет установлен вместе с интерпретатором. На Ubuntu его нужно поставить отдельно с помощью команды:

sudo apt update sudo apt install python3-pip 

Запуск pip

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

Итак, вызываем pip:

-m pip --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8) 

При показе своей версии pip также сообщает, куда установлен он сам и на какой версии Python он запущен.

Обратите внимание на структуру команды, которую мы вызывали. Эта команда означает « python3 , запусти модуль -m с именем pip как программу с параметром --version ».

Если вы в дальнейшем увидите в документации к pip команды, вроде pip help , то смело вызывайте python3 -m pip help — результат будет тот же самый.

Установка первого пакета

Попробуем установить первый пакет. Для примера возьмем пакет cowsay , который мы установим сразу в пользовательское окружение.

Причин для установки туда есть несколько:

  • Мы не помешаем своими пакетами другим пользователям системы
  • Нам не потребуются права администратора
  • Мы не поломаем операционную систему случайной установкой более свежего пакета, чем того требует система (особенно это важно в Linux, где многие системные задачи решаются с помощью Python)

Итак, установим cowsay:

Пакет установился и стал доступен интерпретатору. Теперь мы видим, что он делает — печатает корову, которая говорит заданную пользователем фразу.

Флаг --user команды pip install сообщает pip, что мы хотим установить пакет в глобальное окружение текущего пользователя. Если этот флаг не указать, то pip установит пакет в общесистемное окружение. Старайтесь не делать так, чтобы не мешать другим пользователям системы.

Программа pip, точки входа и PATH

Как мы увидели выше, установленный пакет cowsay может быть использован из кода. Но этот пакет имеет еще и точку входа.

Точки входа — это готовые к исполнению программы, содержащиеся в пакете. Если у пакета есть точки входа, то pip создаст для каждой специальный исполняемый скрипт, который позволит удобно запускать программу из командной оболочки.

При этом нужно обращать внимание на путь до директории, в которую pip помещает такие скрипты — например, на Linux это ~/.local/bin . Этот путь нужно добавить в PATH . Проверьте содержимое PATH , и если путь прописан правильно, то скрипт для cowsay должен работать так:

Точка входа — это всегда Python-модуль, пригодный для запуска в роли программы. Такие программы называют еще исполняемыми файлами — позже мы рассмотрим, как такие делать. Создаваемые pip'ом скрипты вызывают python3 -m имя_модуля , поэтому установленный нами cowsay можно запускать точно так же:

Всегда свежий pip

Как вы могли уже догадаться, сам pip — это тоже точка входа одноименного пакета pip, поэтому мы его запускаем командой python3 -m pip .

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

-m pip install --user --upgrade pip 

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Почему вам действительно нужно обновить pip

Новые выпуски программного обеспечения могут содержать исправления ошибок, новые функции и более высокую производительность. Например, в NumPy 1.20 добавлены аннотации типов и улучшена производительность за счет использования SIMD, когда это возможно. Если вы устанавливаете NumPy, возможно, вы захотите установить самую новую версию.

К сожалению, если вы используете старую версию pip , установка последней версии пакета Python может завершиться ошибкой или установиться более медленным и более сложным способом.

Почему? Комбинация управления версиями glibc , графика окончания срока службы CentOS и способов установки pip пакетов.

Давайте посмотрим, в чем именно заключается проблема, как ее решить и, наконец, если вам достаточно интересно, что ее вызывает.

Проблема со старым pip

Начнем с образа Docker Ubuntu 18.04. Эта версия Ubuntu, выпущенная в апреле 2018 года, включает Python версии 3.6 и pip версии 9.

[itamarst@blake dev]$ docker run -it ubuntu:18.04 root@1a43d55f0524:/# apt-get update . root@1a43d55f0524:/# apt-get install --no-install-recommends python3 python3-pip . root@1a43d55f0524:/# pip3 --version pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6) 

Все идет нормально.

Ошибка №1: компиляция из исходников

Затем давайте установим пакет cryptography , который является одним из самых загружаемых пакетов Python на PyPI, с миллионами загрузок в месяц (обычно как косвенная зависимость).

root@1a43d55f0524:/# pip3 install cryptography Collecting cryptography Downloading https://files.pythonhosted.org/packages/fa/2d/2154d8cb773064570f48ec0b60258a4522490fcb115a6c7c9423482ca993/cryptography-3.4.6.tar.gz (546kB) 100% |################################| 552kB 1.4MB/s Complete output from command python setup.py egg_info: Traceback (most recent call last): File "", line 1, in ModuleNotFoundError: No module named 'setuptools' ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-6jesygn0/cryptography/ 

Эта ошибка означает, что pip , хочет скомпилировали пакеты; это сработает, если мы установим компилятор setuptools и цепочку инструментов разработки Python, но это будет довольно медленно.

Конечно, это не один пакет. Та же проблема возникает например с PyArrow:

root@1a43d55f0524:/# pip3 install pyarrow Collecting pyarrow Downloading https://files.pythonhosted.org/packages/62/d3/a482d8a4039bf931ed6388308f0cc0541d0cab46f0bbff7c897a74f1c576/pyarrow-3.0.0.tar.gz (682kB) 100% |################################| 686kB 1.1MB/s Complete output from command python setup.py egg_info: Traceback (most recent call last): File "", line 1, in ModuleNotFoundError: No module named 'setuptools' ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-heq6zwd7/pyarrow/ 

Почему pip пытается скомпилировать эти пакеты с нуля? Почему мы не получаем предварительно скомпилированный двоичный пакет?

Мы увидим ответ чуть позже, после того как рассмотрим вторую ошибку.

Ошибка №2: старые версии

Затем давайте установим Fil, мой профилировщик памяти для Python.

root@1a43d55f0524:/# pip3 install filprofiler Collecting filprofiler Downloading https://files.pythonhosted.org/packages/e3/a2/843e7b5f1aba27effb0146c7e564e2592bfc9344a8c8ef0d55245bd47508/filprofiler-0.7.2-cp36-cp36m-manylinux1_x86_64.whl (565kB) 100% |################################| 573kB 1.8MB/s Installing collected packages: filprofiler Successfully installed filprofiler-0.7.2 

Это сработало! За исключением того, что вы посетите страницу PyPI для Fil, вы увидите, что версия 0.7.2 довольно устарела. На момент написания этой статьи последняя версия Fil - 0.14.1.

Почему была установлена ​​старая версия?

pip и manylinux

Многие пакеты - от NumPy до Cryptography - требуют компиляции некоторого кода на C/C++/Cython/Rust/и т. д. Чтобы избавить вас от необходимости компилировать все с нуля, специалисты по сопровождению могут загрузить скомпилированную версию кода - «wheels» - в указатель пакетов Python. Если pip видит wheels, которое будет работать с вашей конкретной версией Python и версией операционной системы, он загрузит его вместо исходного кода.

Для Linux, существует несколько вариантов wheels: manylinux1 , manylinux2010 , и manylinux2014 . Вы можете увидеть, какой вариант используется в имени файла загружаемого wheels.

Проблема в том, что старые версии pip не поддерживаются manylinux2010 , и уж точно не manylinux2014 . В Ubuntu 18.04 pip слишком стар, поэтому он знает только о manylinux1 . Это объясняет две проблемы, которые мы видели:

  1. Если проверить имеющиеся файлы списков для PyArrow 3.0.0 на PyPI, вы увидите , что wheels есть только manylinux2010 и manylinux2014 . Поэтому pip решил вернуться к пакету исходного кода, который требует компиляции.
  2. Если вы проверите файлы PyPI для Fil, вы увидите, что есть manylinux2010 , а исходных пакетов нет вообще; поскольку сборка из исходных текстов немного сложна, я распространяю только скомпилированные пакеты. Это означает, что pip продолжает возвращаться к более старым версиям пакета, пока не найдет ту, в которой есть manylinux1 .

Решение: обновление pip

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

В общем, можно выполнить pip install --upgrade pip .

Однако в некоторых средах могут возникать проблемы. Например, если вы посмотрите выше, как мы настраиваем Python в Ubuntu 18.04, мы установили pip из системного пакета.

Проблема в том, что перезапись случайных файлов из системного пакета - плохая идея. Если вы не работаете в среде, которую вы можете при необходимости перестроить с нуля - например, образ Docker - вам никогда не следует запускать pip install с правами root или с помощью sudo для изменения системных пакетов.

Поэтому вместо этого в Ubuntu 18.04 вы можете получить pip через загрузку:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py 

Или вы можете создать virtualenv, а затем обновить его pip , выполнив pip install --upgrade pip :

root@1a43d55f0524:/# python3 -m venv myvenv root@1a43d55f0524:/# . myvenv/bin/activate (myvenv) root@1a43d55f0524:/# pip --version pip 9.0.1 from /myvenv/lib/python3.6/site-packages (python 3.6) (myvenv) root@1a43d55f0524:/# pip install --upgrade pip Collecting pip Using cached https://files.pythonhosted.org/packages/fe/ef/60d7ba03b5c442309ef42e7d69959f73aacccd0d86008362a681c4698e83/pip-21.0.1-py3-none-any.whl Installing collected packages: pip Found existing installation: pip 9.0.1 Uninstalling pip-9.0.1: Successfully uninstalled pip-9.0.1 Successfully installed pip-21.0.1 

Теперь, когда у нас есть более новая версия pip , мы можем легко установить последние версии cryptography и filprofiler :

(myvenv) root@1a43d55f0524:/# pip install cryptography filprofiler Collecting cryptography Downloading cryptography-3.4.6-cp36-abi3-manylinux2014_x86_64.whl (3.2 MB) |################################| 3.2 MB 4.5 MB/s . Installing collected packages: pycparser, threadpoolctl, cffi, filprofiler, cryptography Successfully installed cffi-1.14.5 cryptography-3.4.6 filprofiler-0.14.1 pycparser-2.20 threadpoolctl-2.1.0 

Обратите внимание, что мы загрузили пакет manylinux2014 для cryptography .

Почему существует так много вариаций manylinux?

Скомпилированные расширения Python в Linux связываются со стандартной библиотекой C, а в wheels, в частности, они связываются с GNU Libc, также известной как glibc. Вы можете увидеть, с какими библиотеками связана исполняемая или разделяемая библиотека, с помощью утилиты ldd :

root@1a43d55f0524:/# cd myenv/lib/python3.6/site-packages root@1a43d55f0524:/# ldd cryptography/hazmat/bindings/_openssl.abi3.so linux-vdso.so.1 (0x00007ffdbea7b000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fba7b1bf000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fba7adce000) /lib64/ld-linux-x86-64.so.2 (0x00007fba7b7b0000) 

Обратите внимание, что скомпилированное расширение Python полагается, среди прочего, на glibc /lib/x86_64-linux-gnu/libc.so.6 .

Если вы компилируете свой код с более новой версией glibc, ему могут потребоваться новые API или символы, которые недоступны в старых версиях. А это означает, что ваш код не будет работать с более старыми версиями glibc, то есть со старыми дистрибутивами Linux.

Есть несколько различных решений этой проблемы. Conda решает эту проблему, скомпилировав все свои пакеты по старой версии заголовков glibc, которые она включает; в основном он имеет настраиваемую настройку компиляции, предназначенную для работы с широким спектром выпусков Linux.

Бинарные wheels PyPI решают эту проблему путем компиляции в старых версиях Linux, которые, соответственно, имеют старые версии glibc. Поскольку он скомпилирован для старой версии, он будет работать и с любой более новой версией.

  1. Пакеты manylinux1 построены на CentOS 5.
  2. Пакеты manylinux2010 построены на CentOS 6.
  3. Пакеты manylinux2014 построены на CentOS 7.

Мотивация для каждого нового варианта - это окончание срока службы каждой версии CentOS. И каждый новый вариант требует соответствующей новой версии pip . Вы можете узнать больше в PEP-571 и PEP-599.

Обновите свой pip!

Независимо от того, настраиваете ли вы среду разработки или пишете свой Dockerfile , обязательно обновите pip . В противном случае вам будет намного сложнее устанавливать пакеты.

Ещё раз про установку PIP на Python. Базовые команды

В этой статье в очередной раз коснёмся темы установки PIP на Python. Вы узнаете, что делать, если PIP не установлена, как поставить эту систему, а также как выполняется инсталляция на Windows, Mac, Linux и Raspberry Pi. Дополнительно будут рассмотрены вопросы обновления и работы.

Python, как и любой другой серьёзный язык программирования, поддерживает дополнительные (сторонние) фреймворки и библиотеки. Эти библиотеки устанавливаются разработчиками с простой целью: облегчить себе жизнь и каждый раз не изобретать колесо в новом проекте. Нужные пакеты находятся в PyPI, который можно назвать центральным репозиторием Python и каталогом Python-пакетов (Python Package Index).

Но скачивать и устанавливать эти пакеты вручную — занятие утомительное, а порой и времязатратное. Лучше всего использовать для этих целей специальный инструмент для Python, делающий процесс проще и быстрее. Как вы уже догадались, речь идёт про PIP. И если PIP не установлен, обязательно восполните этот пробел.

Что же такое PIP?

Сама аббревиатура PIP («пип») представляет собой рекурсивный акроним. По сути, это система управления пакетами. Она применяется в целях установки и управления программными пакетами, которые написаны на Python. Ещё систему называют предпочитаемым установщиком программ. А непосредственно pip — это команда, запускающая соответствующую утилиту для установки, переустановки и деинсталляции пакетов, которые находятся в вышеупомянутом PyPI.

Часто возникает вопрос, а не устанавливается ли PIP одновременно с Пайтоном? Да, если речь идёт о следующих версиях: — Python версии 2.7.9 и выше; — Python версии 3.4 и выше.

В вышеупомянутых случаях «пип» устанавливается по дефолту и вместе с Python. Но если же речь идёт о более старых версиях, PIP не установлена. Однако установить PIP совсем несложно. Но прежде чем это сделать, рекомендуется проверить свою версию Python, а также то, правильно ли он у вас инсталлирован.

Проверка версии Python

Для выполнения проверки Python следует открыть командную строку. Она вам понадобится и при последующих действиях. Следует привыкать работать с командной строкой, т. к. многие операции быстрее, удобнее и нагляднее выполнять именно через неё. Если же вы начинающий системный администратор, знание терминала — это пункт под номером 0 в списке необходимых скиллов.

Запускаем командную строку следующим образом: 1. На Windows. Используем комбинацию клавиш «Win+X». 2. На Mac. Нажимаем «Command+пробел». 3. На Линукс. Работает комбинация «Ctrl+Alt+T».

Когда терминал открыт, вводим следующую команду:

 
python –-version

Если у вас Linux и Python 3.x, вводим несколько другую команду:

 
python3 --version

В итоге вы должны получить актуальную версию Питона, которая установлена на вашу операционную систему. Если же что-то не так, вы получите сообщение, что Пайтон не установлен (Python is not defined).

Устанавливаем PIP на Windows

Инструкции, представленные ниже, подойдут для ОС Windows 7/8.1/10. Общий порядок действий, если PIP не установлен, следующий: 1. Скачиваем официальный установочный скрипт с именем get-pip.py. Для начала нажимаем правую кнопку мыши, потом «Сохранить как…». В итоге скрипт сохранится по указанному вами пути (пусть это будет папка «Загрузки»). 2. Открываем терминал (командную строку), после чего переходим к каталогу, где вы поместили файл get-pip.py. 3. Выполняем команду python get-pip.py .

Всё, установка запустится (installs), и инсталляция модуля будет завершена в сжатые сроки. Способ простой и действенный.

Устанавливаем на Mac

В современных версиях Mac как Python, так и PIP уже установлены. Однако со временем они устаревают, что нехорошо, поэтому лучше следить за тем, чтобы на вашем компьютере были актуальные версии. Но если вы хотите работать с той версией Python, которая есть, и желаете инсталлировать последнюю версию системы, сделать это можно простой командой, запустив в терминале следующее:

 
sudo easy_install pip

Для установки более новых версий языка программирования Python вам пригодится Homebrew. С его помощью Пайтон устанавливается тоже очень просто (предполагается, что утилита командной строки Homebrew уже установлена):

 
brew install python

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

 
brew unlink python && brew link python

Устанавливаем на Linux

Для дистрибутивов Linux желательно использовать системный менеджер пакетов и штатные репозитории. Команды могут различаться с учётом конкретного дистрибутива. Для примера возьмём популярный дистрибутив Ubuntu. Если у вас Python 3, в терминале выполняем:

 
sudo apt install python3-pip

А потом проверяем, что получилось:

 
pip3 --version

Если же речь идёт о Пайтон 2, команды установки и проверки версии будут чуть другими:

 
sudo apt install python-pip
 
pip --version

Как установить PIP на Raspberry Pi

Если вы являетесь пользователем Raspberry, эта часть статьи для вас. Если же вы даже не в курсе, что такое Raspberry, можете смело пропустить данный абзац.

Уже начиная с Rapsbian Jessie, система устанавливается по дефолту, то есть вопросов о том, что PIP не установлена, не возникает. Это ещё и причина обновить ОС до Rapsbian Jessie а не использовать Rapsbian Wheezy/Jessie Lite. Однако никто не мешает установить систему и на старую версию.

Для Python 2 это выглядит следующим образом:

 
sudo apt-get install python-pip

Для третьей версии изменения в команде крайне незначительны:

 
sudo apt-get install python3-pip

В процессе работы нужно будет применять pip и pip3 соответственно.

Обновляем PIP для Python

Для многих разработчиков очень важно иметь последнюю версию установщика программ. Это имеет особое значение, если мы говорим о сохранении приемлемого уровня безопасности, исправлении ошибок (багов) и т. д.

Обновить PIP не составляет труда: 1. Для Windows. Используем команду python -m pip install -U pip . 2. Для Mac, Линукс либо Raspberry Pi — pip install -U pip .

Устанавливаем Python-библиотеки посредством PIP

Когда установка (installing) завершена, «пип» установился и готов к работе. В результате мы можем приступать к установке пакетов с помощью PIP из PyPI. Делается это с помощью простейшего синтаксиса, содержащего минимум кода:

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

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

 
pip install имя_пакаета==1.0.0

Также вы можете найти конкретный пакет:

 
pip search "ваш_запрос_поиска"

Или посмотреть детали уже установленного (installed):

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

Ещё пользователю доступен список всех пакетов, которые установлены:

 
pip list

А также список пакетов PIP, которые устарели:

 
pip list –outdated

Но это не беда, ведь можно выполнить обновление:

 
pip install имя_пакета --upgrade

Однако учтите, что при обновлении старая версия будет удалена. Ещё может возникнуть необходимость в полной переустановке пакета:

 
pip install имя_пакета --upgrade --force-reinstall

Совсем несложно и удалить пакет:

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

Это основы, которые должен знать каждый. Если же вас интересует Python-разработка на более продвинутом уровне, добро пожаловать на курсы в OTUS!

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

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