Как обновить все библиотеки python windows

Is it possible to upgrade all Python packages at one time with pip? Note: that there is a feature request for this on the official issue tracker.

More Robust Solution

For pip3, use this:

pip3 freeze --local |sed -rn 's/^([^=# t\][^ t=]*)=.*/echo; echo Processing 1 ...; pip3 install -U 1/p' |sh

For pip, just remove the 3s as such:

pip freeze --local |sed -rn 's/^([^=# t\][^ t=]*)=.*/echo; echo Processing 1 ...; pip install -U 1/p' |sh

OS X Oddity

OS X, as of July 2017, ships with a very old version of sed (a dozen years old). To get extended regular expressions, use -E instead of -r in the solution above.

Solving Issues with Popular Solutions

This solution is well designed and tested1, whereas there are problems with even the most popular solutions.

  • Portability issues due to changing pip command line features
  • Crashing of xargs because of common pip or pip3 child process failures
  • Crowded logging from the raw xargs output
  • Relying on a Python-to-OS bridge while potentially upgrading it3

The above command uses the simplest and most portable pip syntax in combination with sed and sh to overcome these issues completely. Details of the sed operation can be scrutinized with the commented version2.


Details

[1] Tested and regularly used in a Linux 4.8.16-200.fc24.x86_64 cluster and tested on five other Linux/Unix flavors. It also runs on Cygwin64 installed on Windows 10. Testing on iOS is needed.

[2] To see the anatomy of the command more clearly, this is the exact equivalent of the above pip3 command with comments:

# Match lines from pip's local package list output
# that meet the following three criteria and pass the
# package name to the replacement string in group 1.
# (a) Do not start with invalid characters
# (b) Follow the rule of no white space in the package names
# (c) Immediately follow the package name with an equal sign
sed="s/^([^=# t\][^ t=]*)=.*"

# Separate the output of package upgrades with a blank line
sed="$sed/echo"

# Indicate what package is being processed
sed="$sed; echo Processing 1 ..."

# Perform the upgrade using just the valid package name
sed="$sed; pip3 install -U 1"

# Output the commands
sed="$sed/p"

# Stream edit the list as above
# and pass the commands to a shell
pip3 freeze --local | sed -rn "$sed" | sh

[3] Upgrading a Python or PIP component that is also used in the upgrading of a Python or PIP component can be a potential cause of a deadlock or package database corruption.

In this article, we will learn to upgrade all Python packages using pip manager. We will use some built-in functions, pip Python manager available in Python to upgrade all packages available in Python. Let’s first have a quick look over what is a pip in Python.

The Pip Python Package Manager

Programmers generally use virtual environments and pip package while working with the Python programming language. When working with projects in Python, users have packages versions being used are defined, which starts growing with time and some packages start to be outdated. pip Python manager is designed to upgrade the python packages system-wide. Let us look at different ways to use pip to upgrade packages from older versions to newer or latest versions.

Update all packages using pip on Windows

This is the easier way to upgrade packages by using pip in conjunction with Windows PowerShell. Open your command shell and enter the below command. This will upgrade all packages system-wide to the latest or newer version available in the Python Package Index (PyPI).

pip freeze | %{$_.split('==')[0]} | %{pip install --upgrade $_}

Update all packages using pip on Linux

Linux provides a number of ways to use pip in order to upgrade python packages. This includes two ways using grep and awk.

  • Use grep to upgrade packages — The grep is to skip editable («-e») package definitions, and the -n1 flag for xargs that prevents stopping everything, if updating one package fails.
pip3 list --outdated --format=freeze | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip3 install -U 
  • Use awk to upgrade packages — The below command first lists all outdated packages, then fetches the first column and converts the multiline result from cut into a single-line, and forms a space-separated list. It then skips header lines, fetches the first column and takes 1 argument from the pipe left of it, and at last passes it to the command to upgrade the list of packages.
pip3 list -o | cut -f1 -d' ' | tr " " "n" | awk '{if(NR>=3)print)' | cut -d' ' -f1 | xargs -n1 pip3 install -U

Command for either Windows or Linux for updating packages

pip freeze first outputs a list of installed packages into a requirements file (requirements.txt). Then the user needs to edit requirements.txt, and replace all ‘==’ with ‘>=’. Use the ‘Replace All’ command in the editor. It then upgrades all outdated packages.

#outputs the list of installed packages
pip freeze > requirements.txt

#updates all packages
pip install -r requirements.txt --upgrade

Updating all packages in a Virtual Environment

The easiest way to update unpinned packages (i.e., packages that do not require a specific version) in a virtual environment is to run the following Python script that uses pip. Unlike pip freeze, this command will not print warnings and FIXME errors.

For pip < 10.0.1

import pkg_resources
from subprocess import call

for dist in pkg_resources.working_set:
    call("python -m pip install --upgrade " + dist.<projectname>, shell=True)

For pip >= 10.0.1

import pkg_resources
from subprocess import call

packages = [dist.project_name for dist in pkg_resources.working_set]

call("pip install --upgrade " + ' '.join(packages), shell=True)

Updating all Local Packages using pip-review

This command updates only local Python packages. However, this command may not be feasible because it might sometimes generate errors and pip.review may or may not support Python 3 version. pip-review is a fork of pip-tools. pip-review package works but pip-tools package no longer works in the latest versions of Python.

$ pip install pip-review
$ pip-review --local --interactive

Conclusion

In this article, we learned different commands to upgrade or update all Python packages using pip manager in Python. We saw two main methods such as pip freeze and pip review to update packages.

In this article, we will learn to upgrade all Python packages using pip manager. We will use some built-in functions, pip Python manager available in Python to upgrade all packages available in Python. Let’s first have a quick look over what is a pip in Python.

The Pip Python Package Manager

Programmers generally use virtual environments and pip package while working with the Python programming language. When working with projects in Python, users have packages versions being used are defined, which starts growing with time and some packages start to be outdated. pip Python manager is designed to upgrade the python packages system-wide. Let us look at different ways to use pip to upgrade packages from older versions to newer or latest versions.

Update all packages using pip on Windows

This is the easier way to upgrade packages by using pip in conjunction with Windows PowerShell. Open your command shell and enter the below command. This will upgrade all packages system-wide to the latest or newer version available in the Python Package Index (PyPI).

pip freeze | %{$_.split('==')[0]} | %{pip install --upgrade $_}

Update all packages using pip on Linux

Linux provides a number of ways to use pip in order to upgrade python packages. This includes two ways using grep and awk.

  • Use grep to upgrade packages — The grep is to skip editable («-e») package definitions, and the -n1 flag for xargs that prevents stopping everything, if updating one package fails.
pip3 list --outdated --format=freeze | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip3 install -U 
  • Use awk to upgrade packages — The below command first lists all outdated packages, then fetches the first column and converts the multiline result from cut into a single-line, and forms a space-separated list. It then skips header lines, fetches the first column and takes 1 argument from the pipe left of it, and at last passes it to the command to upgrade the list of packages.
pip3 list -o | cut -f1 -d' ' | tr " " "n" | awk '{if(NR>=3)print)' | cut -d' ' -f1 | xargs -n1 pip3 install -U

Command for either Windows or Linux for updating packages

pip freeze first outputs a list of installed packages into a requirements file (requirements.txt). Then the user needs to edit requirements.txt, and replace all ‘==’ with ‘>=’. Use the ‘Replace All’ command in the editor. It then upgrades all outdated packages.

#outputs the list of installed packages
pip freeze > requirements.txt

#updates all packages
pip install -r requirements.txt --upgrade

Updating all packages in a Virtual Environment

The easiest way to update unpinned packages (i.e., packages that do not require a specific version) in a virtual environment is to run the following Python script that uses pip. Unlike pip freeze, this command will not print warnings and FIXME errors.

For pip < 10.0.1

import pkg_resources
from subprocess import call

for dist in pkg_resources.working_set:
    call("python -m pip install --upgrade " + dist.<projectname>, shell=True)

For pip >= 10.0.1

import pkg_resources
from subprocess import call

packages = [dist.project_name for dist in pkg_resources.working_set]

call("pip install --upgrade " + ' '.join(packages), shell=True)

Updating all Local Packages using pip-review

This command updates only local Python packages. However, this command may not be feasible because it might sometimes generate errors and pip.review may or may not support Python 3 version. pip-review is a fork of pip-tools. pip-review package works but pip-tools package no longer works in the latest versions of Python.

$ pip install pip-review
$ pip-review --local --interactive

Conclusion

In this article, we learned different commands to upgrade or update all Python packages using pip manager in Python. We saw two main methods such as pip freeze and pip review to update packages.

How to Update All Python Packages

With Python, the best practice of pinning all the packages in an environment at a specific version ensures that the environment can be reproduced months or even years later. 

  • Pinned packages in a requirements.txt file are denoted by ==. For example,  requests==2.21.0. Pinned packages should never be updated except for a very good reason, such as to fix a critical bug or vulnerability.
  • Conversely, unpinned packages are typically denoted by >=, which indicates that the package can be replaced by a later version. Unpinned packages are more common in development environments, where the latest version can offer bug fixes, security patches and even new functionality.

As packages age, many of them are likely to have vulnerabilities and bugs logged against them. In order to maintain the security and performance of your application, you’ll need to update these packages to a newer version that fixes the issue. 

The pip package manager can be used to update one or more packages system-wide. However, if your deployment is located in a virtual environment, you should use the Pipenv package manager to update all Python packages. 

NOTE: be aware that upgrading packages can break your environment by installing incompatible dependencies. This is because pip and pipenv do not resolve dependencies, unlike the ActiveState Platform. To ensure your environment doesn’t break on upgrade, you can sign up for a free ActiveState Platform account and import your current requirements.txt, ready to be upgraded.

Python Package Upgrade Checklist

In general, you can use the following steps to perform a package upgrade:

1. Check that Python is installed

Before packages can be updated, ensure that a Python installation containing the necessary files needed for updating packages is in place by following the steps outlined in <Installation Requirements>

2. Get a list of all the outdated packages

To generate a list of all outdated packages:

pip list --outdated

3. Upgrade outdated packages

Depending on your operating system or virtual environment, refer to the following sections.

Update all Python Packages on Windows

The easiest way to update all packages in a Windows environment is to use pip in conjunction with Windows PowerShell: 

  1. Open a command shell by typing ‘powershell’ in the Search Box of the Task bar
  2. Enter:

    pip freeze | %{$_.split('==')[0]} | %{pip install --upgrade $_}

This will upgrade all packages system-wide to the latest version available in the Python Package Index (PyPI).

Update all Python Packages on Linux

Linux provides a number of ways to use pip in order to upgrade Python packages, including grep and awk.

To upgrade all packages using pip with grep on Ubuntu Linux:

pip3 list --outdated --format=freeze | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip3 install -U 

To upgrade all packages using pip with awk on Ubuntu Linux:

pip3 list -o | cut -f1 -d' ' | tr " " "n" | awk '{if(NR>=3)print}' | cut -d' ' -f1 | xargs -n1 pip3 install -U 

Updating Python Packages on Windows or Linux 

Pip can be used to upgrade all packages on either Windows or Linux:

  1. Output a list of installed packages into a requirements file (requirements.txt): 
pip freeze > requirements.txt
  1. Edit requirements.txt, and replace all ‘==’ with ‘>=’. Use the ‘Replace All’ command in the editor.
  2. Upgrade all outdated packages: 
pip install -r requirements.txt --upgrade

Updating all Packages in a Virtual Environment

The easiest way to update unpinned packages (i.e., packages that do not require a specific version) in a virtual environment is to run the following Python script that makes use of pip:

import pkg_resources
from subprocess import call

for dist in pkg_resources.working_set:
    call("python -m pip install --upgrade " + dist.<projectname>, shell=True)

Updating all Packages in a Pipenv Environment

The simplest way to update all the unpinned packages in a specific virtual environment created with pipenv is to do the following steps:

  1. Activate the Pipenv shell that contains the packages to be upgraded:
pipenv shell
  1. Upgrade all packages:
pipenv update

Modern way to manage Python packages – ActiveState Platform

The ActiveState Platform is a cloud-based build automation and dependency management tool for Python. It provides dependency resolution for:

  • Python language cores, including Python 2.7 and Python 3.5+
  • Python packages and their dependencies, including:
    • Transitive dependencies (ie., dependencies of dependencies)
    • Linked C and Fortran libraries, so you can build data science packages
    • Operating system-level dependencies for Windows, Linux, and macOS
    • Shared dependencies (ie., OpenSSL)

The ActiveState Platform is the only Python package management solution that not only resolves dependencies but also provides workarounds for dependency conflicts.

Simply following the instruction prompts will resolve the conflict, eliminating dependency hell.

You can try the ActiveState Platform for free by creating an account using your email or your GitHub credentials.  Start by creating a new Python project, pick the latest version that applies to your project, your OS and start to add packages. Or start by simply importing your requirements.txt file and creating a Python version with all the packages you need. The Platform will automatically pick the right package versions for your environment to ensure security and reproducibility.

Watch this tutorial to learn how to use the ActiveState Platform to create a Python 3.9 environment, and then use the Platform’s Command-Line Interface (State Tool) to install and manage it.

requested packages dependenciesReady to see for yourself? You can try the ActiveState Platform by signing up for a free account using your email or GitHub credentials.

Just run the following command to install Python 3.9 and our package manager, the State Tool:

Windows

powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/install.ps1'))) -activate-default ActiveState-Labs/Python-3.9Beta"

Linux

sh <(curl -q https://platform.activestate.com/dl/cli/install.sh) --activate-default ActiveState-Labs/Python-3.9Beta

Now you can run state install <packagename>. Learn more about how to use the State Tool to manage your Python environment. Or sign up for a free demo and let us show you how it can help improve your dev team’s workflow by compiling Python packages and resolve dependencies in minutes.

Вступление

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

Для решения этой проблемы был создан
pip-review. Он позволяет легко
управлять всеми доступными обновлениями PyPi с
помощью простых команд.

Первоначально являясь частью пакета pip-tools , теперь он существует
как отдельная удобная оболочка для pip . В этом руководстве мы
расскажем, как обновить все пакеты с помощью pip-review .

Установить pip-review

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

 $ pip install pip-review 
 ... 
 Successfully installed pip-review-1.1.0 

Справочная страница pip-review

Если вы забыли какую-либо из этих команд или вам просто нужен обзор
параметров команды:

 $ pip-review -h 
 usage: pip-review [-h] [--verbose] [--raw] [--interactive] [--auto] 
 
 Keeps your Python packages fresh. Looking for a new maintainer! See https://github.com/jgonggrijp/pip-review/issues/76 
 
 optional arguments: 
 -h, --help show this help message and exit 
 --verbose, -v Show more output 
 --raw, -r Print raw lines (suitable for passing to pip install) 
 --interactive, -i Ask interactively to install updates 
 --auto, -a Automatically install every update found 
 
 Unrecognised arguments will be forwarded to pip list --outdated and pip install, so you can pass things such as --user, --pre and --timeout and they will do what you expect. See pip list -h and pip install -h 
 for a full overview of the options. 

Проверить все версии пакетов с помощью pip-review

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

 $ pip-review 
 scikit-learn==0.23.2 is available (you have 0.23.1) 
 scipy==1.5.4 is available (you have 1.4.1) 
 seaborn==0.11.0 is available (you have 0.10.1) 
 ... 

Это дает вам отчет, в котором перечислены все доступные обновления
пакетов. По сути, он называет pip list – outdated . Это имеет то
преимущество, что вы можете решить, какие пакеты вы хотите обновить,
если они вообще есть.

Обновите все пакеты с помощью pip-review

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

 $ pip-review --auto 
 Collecting beautifulsoup4==4.9.3 
 Downloading beautifulsoup4-4.9.3-py3-none-any.whl (115 kB) 
 ... 

Выполнение только этой команды — все готово. Это так просто.

Обновите все пакеты в интерактивном режиме с помощью pip-review

Если вы, возможно, не хотите обновлять некоторые конкретные пакеты, вам
не нужно запускать программу обновления --auto Если вы запустите
процесс как --interactive , вы можете выбрать для каждого отдельного
пакета, хотите ли вы его обновлять или нет:

 $ pip-review --interactive 
 matplotlib==3.3.3 is available (you have 3.1.3) 
 Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit N 
 numpy==1.19.4 is available (you have 1.18.1) 
 Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit Y 
 pandas==1.1.5 is available (you have 1.0.3) 
 Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit N 
 ... 

Для каждого пакета доступно четыре варианта: «Да», «Нет», «Все» и
«Выйти».

Выбор «Да» означает, что вы хотите, чтобы этот конкретный пакет был
добавлен в «список подлежащих обновлению». В конце каждый пакет в этом
списке обновляется.

Если вы в конечном итоге выберете «Нет», это будет означать, что пакет
не будет обновляться. Выбор «Все» означает, что все продвигаемые пакеты
будут добавлены в список. Наконец, выбор «Quit» будет означать, что
pip-review пропустит все оставшиеся пакеты и обновит только те, для
которых вы выбрали «Yes».

Запретить pip-review обновлять определенные пакеты

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

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

Его синтаксис и содержимое идентичны файлам требований. Есть одно
ключевое отличие:

Включение пакета в файл ограничений не запускает установку пакета.

Создадим файл constraints.txt

 $ export PIP_CONSTRAINT="/home/username/constraints.txt 

А теперь в него вставим:

 matplotlib==3.1.3 
 pandas==1.0.3 

Заключение

Обновление пакетов с помощью pip может быть утомительным и трудоемким.
И, как и ожидалось в мире информатики, родился инструмент для
автоматизации этого. В этой статье мы pip-review — как ее установить,
а также как использовать ее для обновления пакетов в Python.

Введение

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

Терминология

  • «Дистрибутив» — то, что pip может установить;
  • «Пакет» — то, что можно использовать в операторах импорта. Большинство дистрибутивов включают один пакет с тем же именем, что и дистрибутив но есть исключения;
  • «Wheel» — это специальный файл с суффиксом .whl;
  • Установка wheel просто копирует файлы в нужную директорию без компиляции и обработки.

Примеры

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

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

pip install requests

Установка пакета из локального файла wheel

pip install requests-2.22.0-py2.py3-none-any.whl

Установка пакета из Git репозитория

pip install git+https://github.com/psf/requests.git

Установка пакета из директории

pip install /home/user/src/requests

Удаление пакетов

Чтобы удалить пакет:

pip uninstall SomePackage 

Список установленных пакетов

Вывод списка пакетов, установленных через pip

pip list

Пакеты обновления

Бег

 $ pip install --upgrade SomePackage 

 

обновит пакет SomePackage и все его зависимости. Кроме того, pip автоматически удаляет старую версию пакета перед обновлением.

Чтобы обновить сам пункт, сделайте

 $ pip install --upgrade pip

 

в Unix или

 $ python -m pip install --upgrade pip

 

на машинах Windows.

Обновление всех устаревших пакетов в Linux

pip не ток содержит флаг , чтобы позволить пользователю обновить все устаревшие пакеты в одном кадре. Тем не менее, это может быть достигнуто путем объединения команд в среде Linux:

 pip list --outdated --local | grep -v '^-e' | cut -d = -f 1  | xargs -n1 pip install -U

 

Эта команда принимает все пакеты в локальном virtualenv и проверяет, устарели ли они. Из этого списка, он получает имя пакета , а затем трубы , которые в pip install -U команду. В конце этого процесса все локальные пакеты должны быть обновлены.

Обновление всех устаревших пакетов в Windows

pip не ток содержит флаг , чтобы позволить пользователю обновить все устаревшие пакеты в одном кадре. Тем не менее, это может быть достигнуто путем объединения команд в среде Windows:

 for /F "delims= " %i in('pip list --outdated --local') do pip install -U %i

 

Эта команда принимает все пакеты в локальном virtualenv и проверяет, устарели ли они. Из этого списка, он получает имя пакета , а затем трубы , которые в pip install -U команду. В конце этого процесса все локальные пакеты должны быть обновлены.

Создайте файл require.txt для всех пакетов в системе

pip помогает в создании requirements.txt файлов, предоставляя freeze опцию.

 pip freeze > requirements.txt

 

Это позволит сохранить список всех пакетов и их версию , установленный на систему в файл с именем requirements.txt в текущей папке.

Создайте файл require.txt из пакетов только в текущем virtualenv

pip помогает в создании requirements.txt файлов, предоставляя freeze опцию.

 pip freeze --local > requirements.txt

 

--local параметр будет выводить только список пакетов и версий, которые установлены локально на virtualenv. Глобальные пакеты не будут перечислены.

Использование определенной версии Python с pip

Если у вас установлены и Python 3, и Python 2, вы можете указать, какую версию Python вы бы хотели использовать в pip. Это полезно, когда пакеты поддерживают только Python 2 или 3 или когда вы хотите протестировать оба.

Если вы хотите установить пакеты для Python 2, запустите:

 pip install [package]

 

или же:

 pip2 install [package]

 

Если вы хотите установить пакеты для Python 3, выполните:

 pip3 install [package]

 

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

 pathtothatpython.exe -m pip install some_package # on Windows OR
/usr/bin/python25 -m pip install some_package # on OS-X/Linux

 

На платформах OS-X / Linux / Unix важно помнить о различии между системной версией python (обновление которой делает вашу систему неработоспособной) и пользовательской версией (версиями) python. Вы можете, в зависимости от которого вы пытаетесь обновить, необходимо префикс эти команды с sudo и ввода пароля.

Аналогично, в Windows некоторые установки python, особенно те, которые являются частью другого пакета, могут в конечном итоге быть установлены в системные каталоги — те, которые вам придется обновить из командного окна, работающего в режиме администратора, — если вы обнаружите, что вам нужно сделать это , это очень хорошая идея , чтобы проверить , какой питон установки вы пытаетесь обновить с помощью команды , например python -c"import sys;print(sys.path);" или py -3.5 -c"import sys;print(sys.path);" Вы также можете проверить , какой пип вы пытаетесь запустить с pip --version

В Windows, если у вас есть как Python 2 и установлен Python 3, и на вашем пути и вашего питона 3 больше , чем 3,4 , то вы, вероятно , также есть питон пусковая py на вашем системном пути. Затем вы можете делать такие трюки, как:

 py -3 -m pip install -U some_package # Install/Upgrade some_package to the latest python 3
py -3.3 -m pip install -U some_package # Install/Upgrade some_package to python 3.3 if present
py -2 -m pip install -U some_package # Install/Upgrade some_package to the latest python 2 - 64 bit if present
py -2.7-32 -m pip install -U some_package # Install/Upgrade some_package to python 2.7 - 32 bit if present

 

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

Установка пакетов еще не на пипе, как колеса

Многие чистые пакеты python еще не доступны в индексе пакетов Python в виде колес, но все равно устанавливаются нормально. Однако некоторые пакеты в Windows выдают ужасную ошибку vcvarsall.bat not found.

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

Самый простой ответ должен пойти на Кристофа Gohlke в отличном месте и найти соответствующую версию библиотеки , которые вам нужны. При необходимости в пакете назвать -cp *** NN *должно соответствовать вашей версии питона, то есть , если вы используете Windows 32 разрядного питона даже на Win64 имя должны включать -win32- и при использовании 64битный питона его должна включать в себя -win_amd64- , а затем версия питона должен соответствовать, то есть для Python 34 файла должно включать в себя -cp * 34 — *** и т.д. , это в основном магия , что пип делает для вас на сайте PyPi.

Кроме того, вам нужно получить соответствующий комплект разработки для Windows для используемой версии python, заголовки для любой библиотеки, к которой интерфейс пытается подключить пакет, возможно, заголовки python для версии python и т. Д.

Python 2.7 использовал Visual Studio 2008, Python 3.3 и 3.4 использовал Visual Studio 2010, а Python 3.5+ использует Visual Studio 2015.

  • Установить « Visual C ++ Compiler пакет для Python 2.7 », которая доступна на веб — сайте Microsoft или
  • Установка « Windows SDK для Windows 7 и .NET Framework 4 » (v7.1), которая доступна на веб — сайте Microsoft или
  • Установка Visual Studio 2015 Community Edition , (или более поздней версии, когда они будут освобождены), гарантируя вам не выбрать опции для установки Поддержка C & C ++ больше не по умолчаниюМне сказали , что это может занять до 8 часов , чтобы загрузить и установить поэтому убедитесь , что эти параметры установлены на первую попытку.

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

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

Альтернативы: Кроме того , стоит глядя, как на PyPI или сайте Christop, за любой чуть более ранней версии пакета , который вы ищете , что в чистом виде питона или предварительно построенный для вашей платформы и питона версии и , возможно , с помощью тех, если найдено, пока ваша посылка не станет доступной. Точно так же , если вы используете самую последнюю версию питона вы можете обнаружить , что он принимает сопровождающим пакета немного времени , чтобы догнать так и для проектов , которые действительно нуждаются в конкретный пакет , который вы , возможно , придется использовать немного старше питона на данный момент. Вы также можете проверить исходный сайт пакетов, чтобы увидеть, есть ли разветвленная версия, которая доступна в готовом виде или в виде чистого Python, и найти альтернативные пакеты, которые предоставляют функции, которые вам необходимы, но доступны — один из примеров, который приходит на ум, это Подушка , активно поддерживается, падение в замене для PIL в настоящее время не обновляется в течение 6 лет и не доступны для Python 3.

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

Примечание по установке предварительных выпусков

Пип следует правилам семантического Поддержка версий и по умолчанию предпочитает выпустил пакеты по пре-релизам. Так что, если данный пакет был выпущен как V0.98 , и есть релиз — кандидат V1.0-rc1 поведение по умолчанию pip install будет установить V0.98 — если вы хотите установить релиз — кандидат, рекомендуется для тестирования в виртуальной среде , во- первых, вы можете включить это сделать с --pip install --pre имя-пакета или --pip install --pre --upgrade имя-пакета. Во многих случаях в предварительных выпусках или у кандидатов на выпуск могут не быть колес, созданных для всех комбинаций платформы и версии, поэтому вы с большей вероятностью столкнетесь с вышеуказанными проблемами.

Замечание по установке версий разработки

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

Для таких установок существует три варианта:

  1. Загрузка сжатого снимка, большинство систем контроля версий в Интернете имеют возможность загрузить сжатый снимок кода. Это можно загрузить вручную и затем устанавливается с pip install путь / к / загруженному / примечанию файла, для большинства форматов сжатия пипа будет обрабатывать распаковки в области кэша и т.д.

Синтаксис

Интерфейс использования:
  pip <command> [options]

Команды:
  install                     Установка пакетов.
  download                    Скачивание пакетов.
  uninstall                   Удаление пакетов.
  freeze                      Вывод установленных пакетов в формате файла зависимостей.
  list                        Вывод списка установленных пакетов.
  show                        Вывод информации об установленных пакетах.
  check                       Проверка совместимости установленных пакетов с их зависимостями.
  config                      Управление локальной и глобальной конфигурацией.
  search                      Поиск пакетов в PyPI.
  wheel                       Сборка wheel из зависимостей.
  hash                        Вычисление хешей из  hashes of package archives.
  completion                  Вспомогательная команда для автодополнения командной строки.
  debug                       Вывод информации применимой для отладки.
  help                        Вывод справки по командам.

Общие опции:
  -h, --help                  Вывод справки.
  --isolated                  Запуск pip в изолированном режиме, с игнорированием переменных окружения и пользовательскую конфигурацию.
  -v, --verbose               Расширенный вывод. Опция аддитивная и может использоваться до 3 раз.
  -V, --version               Вывод версии.
  -q, --quiet                 Сокращенный вывод. Опция аддитивная и может использоваться до 3 раз (соответствует уровням логирования WARNING, ERROR, и CRITICAL).
  --log <path>                Путь инкрементального вывода логов.
  --proxy <proxy>             Настройки прокси в форме [user:passwd@]proxy.server:port.
  --retries <retries>         Максимальное количество попыток, которое должно предпринять каждое соединение (по умолчанию 5 раз).
  --timeout <sec>             Установить время ожидания сокета (по умолчанию 15 секунд).
  --exists-action <action>    Действие по умолчанию, когда путь уже существует: (s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
  --trusted-host <hostname>   Пометить хост как доверенный, в случае если HTTPS хоста инвалидный.
  --cert <path>               Путь к альтернативному комплекту CA.
  --client-cert <path>        Путь к сертификату клиента SSL, отдельный файл, содержащий закрытый ключ и сертификат в формате PEM.
  --cache-dir <dir>           Настройка директории кеширования данных.
  --no-cache-dir              Отключение кеша.
  --disable-pip-version-check Отключение периодической проверки PyPI на доступность новой версии pip.
  --no-color                  Подавление цветного вывода.

Параметры

Примечания

При необходимости, pip выполняет компиляцию нативного кода. В Linux Python автоматически выберет доступный компилятор C в вашей системе.

Содержание:развернуть

  • Pip или pip3?
  • Если pip не установлен
  • Windows

  • Linux (Ubuntu и Debian)

  • MacOS

  • Как обновить PIP
  • Команды PIP
  • Пример работы с пакетами

PIP — это менеджер пакетов. Он позволяет устанавливать и управлять пакетами на Python.

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

  • вы заходите на сайт, выбираете нужную версию пакета;
  • скачиваете ее, разархивируете, перекидываете в папку проекта;
  • подключаете, прописываете пути, тестируете.

Вполне вероятно, что эта версия библиотеки вообще не подходит, и весь процесс повторяется заново. А если таких библиотек 10? Устанавливать их вручную?

Нет 🙅🏻‍♂️

Менеджер пакетов PIP — решает данную проблему. Весь процесс установки пакета сводится к выполнению консольной команды pip install package-name. Несложно представить, сколько времени это экономит.

Если вы работали с другими языками программирования, концепция pip может показаться вам знакомой. Pip похож на npm (в Javascript), composer (в PHP) или gem (в Ruby).

Pip является стандартным менеджером пакетов в Python

Pip или pip3?

В зависимости от того, какая версия Python установлена в системе, может потребоваться использовать pip3 вместо pip.

Если вы не знаете какая версия Python установлена на вашей системе, выполните следующие команды:

  • python --version — для Python 2.x
  • python3 --version — для Python 3.x
  • python3.8 --version — для Python 3.8.x

Советуем использовать версию Python 3.6 и выше

Если команда «python» не найдена, установите Python по инструкции из предыдущей статьи.

Далее нужно убедиться, что сам PIP установлен и работает корректно. Узнать это поможет команда:

pip --version

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

pip 19.2.3 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)

☝️ Важный момент: в зависимости от того, какую версию Python вы будете использовать, команда может выглядеть как pip , pip3 или pip3.8

Альтернативный вариант вызова pip:

python3.7 -m pip install package-name

Флаг -m сообщает Python-у запустить pip как исполняемый модуль.

Если pip не установлен

Pip поставляется вместе с Python, и доступен после его установки. Если по какой-то причине pip не установлен на вашей системе, установить его будет не сложно.

Windows

  1. Скачайте файл get-pip.py и сохраните у себя на компьютере.
  2. Откройте командную строку и перейдите в папку, в которой сохранен get-pip.py.
  3. В командной строке выполните команду: python get-pip.py или python3 get-pip.py.
  4. PIP установлен 🎉!

Linux (Ubuntu и Debian)

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

Для Питона 2-й версии, выполните команду:

apt-get install python-pip

Для Питона 3-ей версии:

apt-get install python3-pip

MacOS

  • скачайте файл get-pip.py командой curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py;
  • запустите скачанный файл командой: python get-pip.py или python3 get-pip.py.

Должна появиться запись Successfully Installed. Процесс закончен, можно приступать к работе с PIP на MacOS!

Как обновить PIP

Иногда, при установке очередного пакета, можно видеть сообщение о том, что доступна новая версия pip.

WARNING: You are using pip version 19.2.3, however version 19.3.1 is available.

А в следующей за ней строке

You should consider upgrading via the 'python -m pip install --upgrade pip' command.

указана команда для обновления pip:

python -m pip install --upgrade pip

Команды PIP

Синтаксис pip выглядит следующим образом: pip + команда + доп. опции

pip <command> [options]

Со всеми командами pip можно ознакомиться, выполнив pip help . Информацию по конкретной команде выведет pip help <command>.

Рассмотрим команды pip:

  • pip install package-name — устанавливает последнюю версию пакета;
  • pip install package-name==4.8.2 — устанавливает пакет версии 4.8.2;
  • pip install package-name --upgrade — обновляет версию пакета;
  • pip download — скачивает пакеты;
  • pip uninstall — удаляет пакеты;
  • pip freeze — выводит список установленных пакетов в необходимом формате ( обычно используется для записи в requirements.txt);
  • pip list — выводит список установленных пакетов;
  • pip list --outdated — выводит список устаревших пакетов;
  • pip show — показывает информацию об установленном пакете;
  • pip check — проверяет установленные пакеты на совместимость зависимостей;
  • pip search — по введенному названию, ищет пакеты, опубликованные в PyPI;
  • pip wheel — собирает wheel-архив по вашим требованиям и зависимостям;
  • pip hash — вычисляет хеши архивов пакетов;
  • pip completion — вспомогательная команда используется для завершения основной команды;
  • pip help — помощь по командам.

Пример работы с пакетами

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

  • установим нужные пакеты;
  • импортируем пакет в свой скрипт;
  • разберемся, что такое requirements.txt;
  • обновим/удалим установленные пакеты.

Приступим 🙎🏻‍♂️

Шаг #1 Установка.

Для начала, нам необходимо установить beautifulsoup4 — библиотеку для парсинга информации с веб-сайтов.

pip3 install beautifulsoup4

pip найдет последнюю версию пакета в официальном репозитории pypi.org. После скачает его со всеми необходимыми зависимостями и установит в вашу систему. Если вам нужно установить определенную версию пакета, укажите её вручную:

pip3 install beautifulsoup4==4.8.2

Данная команда способна даже перезаписать текущую версию на ту, что вы укажите.

Также для работы beautifulsoup нам понадобится пакет lxml:

pip install lxml

☝️ Важный момент: по умолчанию pip устанавливает пакеты глобально. Это может привести к конфликтам между версиями пакетов. На практике, чтобы изолировать пакеты текущего проекта, создают виртуальное окружение (virtualenv).

Шаг #2 Импортирование в скрипте.

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

from urllib.request import urlopen
from bs4 import BeautifulSoup

# скачиваем html
page = urlopen("https://habr.com/ru/top/")
content = page.read()

# сохраняем html в виде объекта BeautifulSoup
soup = BeautifulSoup(content, "lxml")

# Находим все теги "a" с классом "post__title_link"
all_a_titles = soup.findAll("a", { "class" : "post__title_link" })

# Проходим по каждому найденному тегу и выводим на экран название статьи
for a_title in all_a_titles:
print(a_title.text)

Шаг #3 requirements.txt.

Если вы просматривали какие-либо проекты Python на Github или где-либо еще, вы, вероятно, заметили файл под названием requirements.txt. Этот файл используется для указания того, какие пакеты необходимы для запуска проекта (в нашем случае beautifulsoup4 и lxml).

Файл requirements.txt создается командой:

pip freeze > requirements.txt

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

beautifulsoup4==4.8.2
lxml==4.4.2
soupsieve==1.9.5

Теперь ваш скрипт вместе с файлом requirements.txt можно сохранить в системе контроля версий (например git).

Для работы парсера в новом месте (например на компьютере другого разработчика или на удаленном сервере) необходимо затянуть файлы из системы контроля версий и выполнить команду:

pip install -r requirements.txt

Шаг #4 Обновление/удаление установленных пакетов.

Команда pip list --outdated выведет список всех устаревших пакетов. Обновить отдельно выбранный пакет поможет команда:

pip install package-name --upgrade

Однако бывают ситуации, когда нужно обновить сразу все пакеты из requirements.txt. Достаточно выполнить команду:

pip install -r requirements.txt --upgrade

Для удаления пакета выполните:

pip uninstall package-name

Для удаления всех пакетов из requirements.txt:

pip uninstall -r requirements.txt -y


Мы разобрали основы по работе с PIP. Как правило, этого достаточно для работы с большей частью проектов.

Python provides the Pip or Python Package Index which is used to add useful extra modules to the Python. The pip is command is provided to search, install, update, and remove the modules provided by the Python Package Index. One of the most popular use cases for pip command is updating existing and already installed Python packages. In this tutorial, we will examine different cases for update and upgrade Python packages.

List Installed Python Packages with Pip

Before updating any package the best practice is listing installed packages. The pip command provides the list parameter which will list installed packages. Also version information about the installed packages will be provided. pip is used for the Python2 and pip3 is used for the Python3.

$ pip list

$ pip2 list

$ pip3 list

The following output will be provided with the package names and version information.

apturl 0.5.2
atomicwrites 1.1.5
attrs 19.3.0
bcrypt 3.1.7
beautifulsoup4 4.8.2
blinker 1.4
Brlapi 0.7.0
certifi 2019.11.28
chardet 3.0.4
Click 7.0
colorama 0.4.3
command-not-found 0.3
cryptography 2.8
cupshelpers 1.0
cycler 0.10.0
dbus-python 1.2.16
decorator 4.4.2
defer 1.0.6
distro 1.4.0
distro-info 0.23ubuntu1
duplicity 0.8.12.0
entrypoints 0.3
et-xmlfile 1.0.1
fasteners 0.14.1
future 0.18.2
html5lib 1.0.1
httplib2 0.14.0
idna 2.8
importlib-metadata 1.5.0
jdcal 1.0
keyring 18.0.1
kiwisolver 1.0.1
language-selector 0.1
launchpadlib 1.10.13
lazr.restfulclient 0.14.2
lazr.uri 1.0.3
lockfile 0.12.2
louis 3.12.0
lxml 4.5.0
macaroonbakery 1.3.1
Mako 1.1.0
MarkupSafe 1.1.0
matplotlib 3.1.2
monotonic 1.5
more-itertools 4.2.0
netifaces 0.10.4
numexpr 2.7.1
numpy 1.19.1
oauthlib 3.1.0
olefile 0.46
openpyxl 3.0.3
packaging 20.3
pandas 0.25.3
paramiko 2.6.0
pexpect 4.6.0
Pillow 7.0.0
pip 20.0.2
pluggy 0.13.0
protobuf 3.6.1
py 1.8.1
pycairo 1.16.2
pycups 1.9.73
PyGObject 3.36.0
PyJWT 1.7.1
pymacaroons 0.13.0
PyNaCl 1.3.0
pyparsing 2.4.6
pyRFC3339 1.1
pytest 4.6.9
python-apt 2.0.0+ubuntu0.20.4.1
python-dateutil 2.7.3
python-debian 0.1.36ubuntu1
pytz 2019.3
pyxdg 0.26
PyYAML 5.3.1
reportlab 3.5.34
requests 2.22.0
requests-unixsocket 0.2.0
scipy 1.3.3
SecretStorage 2.3.1
setuptools 45.2.0
simplejson 3.16.0
six 1.14.0
soupsieve 1.9.5
ssh-import-id 5.10
systemd-python 234
tables 3.6.1
ubuntu-advantage-tools 20.3
ubuntu-drivers-common 0.0.0
ufw 0.36
unattended-upgrades 0.1
urllib3 1.25.8
usb-creator 0.3.7
wadllib 1.3.3
wcwidth 0.1.8
webencodings 0.5.1
wheel 0.34.2
xkit 0.0.0
xlrd 1.1.0
xlwt 1.3.0
zipp 1.0.0

Check If Specified Python Package Is Installated with Pip

As the list parameter lists installed pip packages with their version information we can also check for the specific package by using an external command like grep. We will provide the package name we want to check and list. In the following example, we will check for different packages. If the package is not installed there will be no output. We can also provide only some part of the package name and all matched packages will be listed below.

$ pip3 list | grep zipp
zipp                   1.0.0               
$ 
$ pip3 list | grep setuptools
setuptools             45.2.0              
$ 
$ pip3 list | grep django
$ 
$ pip3 list | grep Py
PyGObject              3.36.0              
PyJWT                  1.7.1               
PyNaCl                 1.3.0               
PyYAML                 5.3.1          

List Outdated Python Packages

Python is a dynamic programming language and the modules provided by Pip updated regularly. Especially popular packages and projects get more frequent updates. After installing a package it will be outdated and should be updated. The pip command provides the list --outdate parameter which will list only outdated packages. This command will connect to the Pip repositories and collects installed packages information. It may take some time as all installed packages will be queried from the Pip repository.

$ pip3 list --outdated

Package            Version       Latest    Type 
------------------ ------------- --------- -----
atomicwrites       1.1.5         1.4.0     wheel
attrs              19.3.0        20.2.0    wheel
bcrypt             3.1.7         3.2.0     wheel
beautifulsoup4     4.8.2         4.9.3     wheel
certifi            2019.11.28    2020.6.20 wheel
Click              7.0           7.1.2     wheel
colorama           0.4.3         0.4.4     wheel
cryptography       2.8           3.2.1     wheel
distro             1.4.0         1.5.0     wheel
distro-info        0.23ubuntu1   0.10      sdist
duplicity          0.8.12.0      0.8.16    sdist
fasteners          0.14.1        0.15      wheel
html5lib           1.0.1         1.1       wheel
httplib2           0.14.0        0.18.1    wheel
idna               2.8           2.10      wheel
importlib-metadata 1.5.0         2.0.0     wheel
jdcal              1.0           1.4.1     wheel
keyring            18.0.1        21.4.0    wheel
kiwisolver         1.0.1         1.3.0     wheel
lazr.restfulclient 0.14.2        0.14.3    sdist
lazr.uri           1.0.3         1.0.5     sdist
lxml               4.5.0         4.6.1     wheel
Mako               1.1.0         1.1.3     wheel
MarkupSafe         1.1.0         1.1.1     wheel
matplotlib         3.1.2         3.3.2     wheel
more-itertools     4.2.0         8.5.0     wheel
netifaces          0.10.4        0.10.9    sdist
numpy              1.19.1        1.19.2    wheel
openpyxl           3.0.3         3.0.5     wheel
packaging          20.3          20.4      wheel
pandas             0.25.3        1.1.3     wheel
paramiko           2.6.0         2.7.2     wheel
pexpect            4.6.0         4.8.0     wheel
Pillow             7.0.0         8.0.1     wheel
pip                20.0.2        20.2.4    wheel
pluggy             0.13.0        0.13.1    wheel
protobuf           3.6.1         3.13.0    wheel
py                 1.8.1         1.9.0     wheel
pycairo            1.16.2        1.20.0    sdist
pycups             1.9.73        2.0.1     sdist
PyGObject          3.36.0        3.38.0    sdist
PyNaCl             1.3.0         1.4.0     wheel
pyparsing          2.4.6         2.4.7     wheel
pytest             4.6.9         6.1.1     wheel
python-dateutil    2.7.3         2.8.1     wheel
python-debian      0.1.36ubuntu1 0.1.38    wheel
pytz               2019.3        2020.1    wheel
pyxdg              0.26          0.27      wheel
reportlab          3.5.34        3.5.54    wheel
requests           2.22.0        2.24.0    wheel
scipy              1.3.3         1.5.3     wheel
SecretStorage      2.3.1         3.1.2     wheel
setuptools         45.2.0        50.3.2    wheel
simplejson         3.16.0        3.17.2    wheel
six                1.14.0        1.15.0    wheel
soupsieve          1.9.5         2.0.1     wheel
urllib3            1.25.8        1.25.11   wheel
wadllib            1.3.3         1.3.4     sdist
wcwidth            0.1.8         0.2.5     wheel
wheel              0.34.2        0.35.1    wheel
xlrd               1.1.0         1.2.0     wheel
zipp               1.0.0         3.4.0     wheel

From the output we can see that the installed version of the package and most recent version provided by the Pip is listed for every package.

Update/Upgrade Python Package To The Latest Version with Pip

Now we have learned every step before updating or upgrade a Python package with pip. By the way, both terms update and upgrade can be used for an update package but the pip command uses the install –user –upgrade parameter to update the package. In the following example, we will update a specific package named lxml .

$ pip3 install --user --upgrade lxml

Update/Upgrade Python Package To Specific Version with Pip

By default, the specified package will be updated or upgraded to the latest version. But this can be a problem if we need a specific version of the Python package. This generally occurs where some software depends on and supports a specific version of the Python package. We can provide the version we want to update with the == sign and provide the version information.

$ pip3 install --user --upgrade lxml==4.6.1

Downgrade Python Package To The Specific version with Pip

The downgrade is the operation of installing an older version of the specified package. We can downgrade the Python package to the specific version by using the == with the install command.

$ pip3 install --user lxml==4.6.1

Менеджер пакетов pip: разбираемся с установкой дополнительных библиотек в Python

Smartiqa Article

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

1. Предназначение менеджера пакетов pip

Ведь не все пакеты нужны в повседневной практике или отдельном проекте, да и места они занимают не мало. Для этих целей создан удаленный репозиторий модулей https://pypi.org/, в котором на сегодня имеется более 260 тыс. проектов на все случаи практики программирования. Вам не обязательно создавать код с нуля, так как под многие задачи уже имеется соответствующий пакет.

Работа с этим хранилищем расширений осуществляется через команду pip. Имеется и другой установщик easy_install, но он применяется существенно реже. Таким образом, пакетный менеджер pip необходим для установки, обновления, удаления и управления модулями языка Python.

2. Подготовительные мероприятия

Чтобы пользоваться возможностями пакетного менеджера pip, его необходимо установить. Если версия вашего Python выше 3.4 или 2.7.9, то pip уже интегрирован в него. Использование более ранних версий языка не рекомендуется (вы теряете часть функционала). Другой способ установить pip (если вы его удалили случайно):

Проверить, что в вашем проекте или на ПК доступен pip, можно применяя следующую команду —version или -V:

pip 20.2.3 from c:usersmikappdatalocalprogramspythonpython38-32libsite-packagespip (python 3.8)

Как видно из ответа, на данном ПК используется python версии 3.8 и pip версии 20.2.3.

В некоторых случаях (актуально для пользователей Linux или macOS) требуется применять команду pip3 (если в результате выполнения pip определяет, что у вас установлен python версии 2 по умолчанию). Это связано с тем, что на *nix системах присутствуют сразу обе версии языка.

Также если на вашем компьютере имеется несколько версий языка Python (например, 3.6, 3.8, 3.9), то менеджер пакетов может применяться отдельно для каждой из них:

После установки менеджера пакетов и определения его версии не следует забывать об его обновления до последнего издания. Для windows систем:

> python -m pip install -U pip

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

3. Установка и удаление пакетов

Наиболее часто используемая команда в менеджере пакетов связана с непосредственной установкой необходимых модулей. Для примера установим библиотеку NumPy (позволяет эффективно работать с многомерными массивами и включает ряд соответствующих математических функций).

После выполнения команды данный модуль добавится в вашу библиотеку со всеми необходимыми дополнениями. Важно отметить, что будет загружена последняя версия NumPy. Бывают случаи, когда для проекта используется определенная версия пакета. Чтобы ничего не «сбилось», требуется установить именно этот релиз либо версию, которая не ниже определенной. Для этого применяются следующие команды:

pip install numpy==1.16.1
pip install numpy>=1.17.0

Имеются и другие операторы (>, < и т.п.). Даже если пакет уже установлен и работает некорректно можно принудительно его переустановить.

pip install --force-reinstall numpy

При разработке сложных проектов может понадобиться установка большого количества модулей. Постоянно их скачивать из репозитория PyPi трудоемко. Для этого разработан способ загрузки пакетов локально. Они могут находиться в архивах (*.tar.gz) или специальных файлах с расширением .whl. Это удобно и в том случае, если нет доступа в интернет у выбранной машины, и вы заранее создали пакет со всеми необходимыми библиотеками.

Для примера запакуем модуль numpy в «колесо» (wheel) и установим его оттуда.

pip wheel --wheel-dir=. numpy
pip install --no-index --find-links=. numpy

Вначале мы создали специальный локальный пакет NumPy и поместили его в текущую папку (о чем свидетельствует точка). В директории создался файл numpy-1.19.2-cp38-cp38-win32.whl. На его основании даже без интернета мы легко сможем установить данную библиотеку. Команда «—no-index» говорит о том, чтобы мы не искали модуль в репозитории PyPi, а —find-links принудительно указывает место расположения пакета. Когда речь идет о сотне пакетов, это очень удобно. Правда для этого необходимо освоить еще один инструмент: набор зависимостей (о нем – следующий раздел).

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

Для удаления нескольких модулей их можно перечислить через пробел или воспользоваться файлом requirements.txt. Чтобы при стирании библиотек постоянно не запрашивалось подтверждение от пользователя («введите Y для удаления или N для отмены»), применяется ключ -y или —yes.

pip uninstall –y pycryptodomex pyzipper
pip uninstall –y –r requirements.txt

К слову, при установке нового пакета или его обновлении старая версия удаляется из библиотеки конкретного окружения.

Читайте также

4. Файлы требований для управления пакетами

Серьезные и многоуровневые приложения никогда не обходятся одной библиотекой. Даже когда вы устанавливали тот же NumPy, вы могли заметить, что помимо самого модуля скачивались дополнительные пакеты, которые мы не запрашивали. Естественно они необходимы для правильной работы NumPy. Но откуда известно, что они нужны?

Для таких целей придумали файл зависимостей, в котором перечислены все требуемые библиотеки для работы конкретного проекта. Он создается в любом удобном месте (обычно его называют requirements.txt) и используется для развертывания приложения в новом окружении.

pip freeze > requirements.txt

Если открыть содержимое текстового документа, то обнаружим все зависимости (небольшой фрагмент последнего показан ниже):

…
bleach==3.2.1
cached-property==1.5.2
certifi==2020.6.20
cffi==1.14.3
chardet==3.0.4
colorama==0.4.4
cycler==0.10.0
…

В созданном при помощи команды freeze файле показаны модули проекта и их версии. Этот файл можно править вручную для задания дополнительных ограничений. Так, для пакета colorama можем приписать особые требования:

colorama>=0.2.0, <= 0.4.4

Этим мы даем понять, что тестировали работоспособность приложения на версиях от 0.2 до 0.4.4 включительно. Другие версии могут вызвать ошибки. После создания файла requirements.txt его можно использовать для установки всех требуемых модулей, не прописывая огромный список вручную.

pip install -r requirements.txt

Менеджер пакетов «заглянет» внутрь и скачает все библиотеки для проекта.

Также рассмотрим более сложный пример. Предположим, что наше приложение может функционировать в питоне версий 2 и 3. Разумеется, каждая из этих версий требует своего набора модулей. В requirements.txt все это можно прописать:

…
cached-property==1.5.2
certifi==2020.6.20 ; python_version < ‘3.6’
cffi==1.14.3 ; python_version >= '3.6'
chardet==3.0.4
…

Так, если у пользователя на компьютере установлен Python 3.5, то модуль cffi устанавливаться не будет. Подобный подход несколько портит красоту зависимостей, что ведет в ряде случаев к созданию дополнительного файла constraints.txt со списком ограничений. Он нужен для того, чтобы избегать установок лишних модулей в многоуровневых приложениях.

Приведем пример. Для работы нашего приложения требуются некоторые
модули определенных версий. Перечислим их в файле requirements.txt.

Django==3.1.2
django-allauth==0.32.0

Для данных библиотек имеются некоторые зависимости. В зависимости от того, на какой версии питона будет работать приложение, могут потребоваться разные модули. Так, python-openid работает только на питоне 2 версии, а python3-openid нужен для 3-ей версии. Все эти требования мы прописывает в requirements.txt, делая его нечитабельным и неудобным.

Django==3.1.2
django-allauth==0.32.0
oauthlib==3.1.0
python-openid==2.2.5 ; python_version < '3.0'
python3-openid==3.2.0; python_version >= '3.0'

Намного разумнее — создать constraints.txt, в котором прописываются дополнительные зависимости, а в файле requirements.txt перечислить основные библиотеки. Когда основные модули начнут подтягивать дополнительные, то они смогут понять, какие же версии им потребуются. Файлы примут такой вид:

Django==3.1.2
django-allauth==0.32.0

oauthlib==3.1.0
python-openid==2.2.5
python3-openid==3.2.0

Для установки всех требуемых модулей и их зависимостей применяется команда:

pip install -c constraints.txt

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

Задачи по теме


Рассматриваем модули и пакеты из стандартной библиотеки Python и PyPI. Учимся использовать инструкции import и from..import и различать абсолютный и относительный импорт. Разбираемся с виртуальными пространствами venv. Создаем собственные модули.


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


5. Дополнительные команды pip

Наберем в командной строке

Перед нами предстанет перечень доступных команд в менеджере пакетов. По каждой команде также можно получить справочную информацию:

Команд и дополнительных ключей в pip имеется предостаточное количество. Ознакомиться с ними можно на сайте документации. Мы же рассмотрим основные команды и покажем их применение.

5.1. Команда download

Позволяет скачивать модули в указанную директорию для дальнейшего их использования локально (без повторного скачивания с репозитория).

# Устанавливаем модуль в текущую папку (получим файл с расширением «.whl»)
pip download numpy
# Загружаем NumPy в поддиректорию /mods/ (если ее нет, то она создастся)
pip download --destination-directory ./mods/ numpy
# В текущую папку скачаются все пакеты, указанные в файле зависимостей
pip download --destination-directory . –r requirements.txt
# Пример использования дополнительных команд (скачиваем библиотеку только для Линукс-систем и питона не ниже 3 версии)
pip download --platform linux_x86_64 --python-version 3 numpy

5.2. Команда list

Команда list позволяет просматривать все имеющиеся в виртуальном окружении или глобально модули с указанием их версий.

# Отображаем список всех установленных модулей
> pip list
Package    Version
---------- -------
numpy      1.19.0
pip        20.2.4
setuptools 50.3.2
# Отображаем список всех установленных модулей в формате json
> pip list --format json
[{"name": "numpy", "version": "1.19.0"}, {"name": "pip", "version": "20.2.4"}, {"name": "setuptools", "version": "50.3.2"}]
# Перечисляем модули, которые имеются в системе, но не связаны с другими (в ряде случаев таким способом можно выяснить модули, которые вам не нужны либо еще не используемые в проекте)
> pip list --not-required
Package    Version
---------- -------
numpy      1.19.0
# Выводим перечень библиотек, которые требуют обновления (для них вышла более новая версия)
> pip list –o
Package Version Latest Type
------- ------- ------ -----
numpy   1.19.0  1.19.2 wheel

5.3. Команда show

Показывает информацию о конкретном модуле или их группе.

# Вывод информации о библиотеке: версия, автор, описание, расположение, зависимости и т.д.
> pip show numpy
Name: numpy
Version: 1.19.0
Summary: NumPy is the fundamental package for array computing with Python.
Home-page: https://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
...
# Самые полные сведения о модуле
> pip show --verbose numpy
…
Metadata-Version: 2.1
Installer: pip
Classifiers:
  Development Status :: 5 - Production/Stable
  Intended Audience :: Science/Research
...

5.4. Команда check

Нужна для проверки зависимостей, нехватки модулей или их неверной версии.

> pip check
No broken requirements found.

Если будут найдены ошибки, то выведется соответствующая информация.

5.5. Команда search

Дает возможность осуществлять поиск пакетов из командной строки.

> pip search numpy
numpy (1.19.2)                            - NumPy is the fundamental package for array computing with Python.
  INSTALLED: 1.19.0
  LATEST:    1.19.2
numpy-cloud (0.0.5)                       - Numpy in the cloud
numpy-alignments (0.0.2)                  - Numpy Alignments
numpy-utils (0.1.6)                       - NumPy utilities.
...

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

5.6. Команда hash

Вычисляет хеш локального модуля на основании определенного алгоритма (можно выбирать).

> pip hash numpy-1.19.2-cp38-cp38-win32.whl
numpy-1.19.2-cp38-cp38-win32.whl:--hash=sha256:51ee93e1fac3fe08ef54ff1c7f329db64d8a9c5557e6c8e908be9497ac76374b

Может понадобиться для проверки полноты скачивания модуля.

5.7. Команда cache

Предоставляет сведения о кеше менеджера пакетов и позволяет оперировать им.

# Очистка кеша и удаление всех whl-файлов
> pip cache purge
# Показать папку с кеш-файлами менеджера пакетов
> pip cache dir
c:usersmmmappdatalocalpipcache
# Узнать размер, место расположения и количество файлов в директории кеша
> pip cache info
Location: c:usersmmmappdatalocalpipcachewheels
Size: 0 bytes
Number of wheels: 0

5.8. Команда debug

Отражает отладочную информацию: о версии пайтона, менеджера пакетов, модулях, операционной системе и т.п.

> pip debug
pip version: pip 20.2.4 from d:1tmpvenvlibsite-packagespip (python 3.8)
sys.version: 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)]
sys.executable: d:1tmpvenvscriptspython.exe
sys.getdefaultencoding: utf-8
...

Сведения могут понадобиться при ошибках и сбоях в работе модулей или установщика.

5.9. Команда completion

Команда актуальная для пользователей *nix систем, чтобы в оболочке bash получить возможность автодополнения команд. Другими словами, при нажатии TAB вы сможете набрать первые 1-2 буквы команды, а остальное определится системой.

$ pip completion --bash >> ~/.profile

Фактически, вы дополняете профиль командной оболочки командами менеджера пакетов.

5.10. Команда config

Управление файлом настроек пакета модулей (pip.ini). Нужно быть аккуратнее, чтобы ничего не сломать в работе питона. Вмешиваться в настройки может понадобиться в случаях наличия нескольких пользователей в вашей операционной системе и при потребности их разграничить в средах программирования.

> pip config list
# При вызове команды получаем содержимое файла pip.ini, который расположен либо в домашней директории, либо в папке виртуального окружения. 
global.require-virtualenv='true'
global.user='false'

Зачастую при установке новых пакетов могут возникать ошибки доступа или ограниченных прав того или иного пользователя. Правильное конфигурирование pip позволяет избежать многих проблем.

Менеджер пакетов языка python обладает целым рядом полезных команд. Он позволяет не только устанавливать / удалять библиотеки из официального репозитория, локальных дисков и папок, но и дает возможности организации управления модулями и их версиями при работе над проектами.

Как вам материал?

Читайте также

Like this post? Please share to your friends:
  • Как обновить все библиотеки dll для windows 10 64 bit
  • Как обновить все dll файлы на windows 10
  • Как обновить браузер opera на windows xp
  • Как обновить время на компьютере через интернет windows xp
  • Как обновить браузер mozilla firefox для windows xp