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 fromcut
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 fromcut
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.
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:
- Open a command shell by typing ‘powershell’ in the Search Box of the Task bar
- 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:
- Output a list of installed packages into a requirements file (requirements.txt):
pip freeze > requirements.txt
- Edit requirements.txt, and replace all ‘==’ with ‘>=’. Use the ‘Replace All’ command in the editor.
- 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:
- Activate the Pipenv shell that contains the packages to be upgraded:
pipenv shell
- 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.
Ready 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.
Введение
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 и других местоположений, поскольку такой код постоянно обновляется, маловероятно, что для него будут созданы колеса, поэтому любые нечистые пакеты потребуют наличия инструментов сборки, и они могут быть расторгнута в любое время , поэтому пользователю настоятельно рекомендуется устанавливать только такие пакеты в виртуальной среде.
Для таких установок существует три варианта:
- Загрузка сжатого снимка, большинство систем контроля версий в Интернете имеют возможность загрузить сжатый снимок кода. Это можно загрузить вручную и затем устанавливается с
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 в вашей системе.
Пакеты можно устанавливать с помощью системного менеджера пакетов, и с помощью пакетного менеджера самого python, например pip.
В последнем случае пакеты лучше устанавливать в каталоге пользователя (user-wide).
Содержание
1 Список всех устаревших пакетов
-
Создать список всех устаревших пакетов:
pip3 list --outdated
-
Создать список всех устаревших пакетов, установленных пользователем:
pip3 list --outdated --user
2 Обновление всех пакетов python в Linux
-
Обновляем пакеты, установленные пользователем (
--user
). -
С использованием
pip
иgrep
:pip3 list --outdated --format=freeze --user | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip3 install -U --user
-
С использованием
pip
иawk
:pip3 list --outdated --user | cut -f1 -d' ' | tr " " "n" | awk '{if(NR>=3)print)' | cut -d' ' -f1 | xargs -n1 pip3 install -U --user
3 Обновление всех пакетов python в Windows
-
Обновляем пакеты, установленные пользователем (
--user
). -
Используем powershell:
pip freeze --user | %{$_.split('==')[0]} | %{pip install --upgrade $_ --user}
Дмитрий Сергеевич Кулябов
Профессор кафедры прикладной информатики и теории вероятностей
Мои научные интересы включают физику, администрирование Unix и сетей.
Похожие
- Windows. Синхронизация времени
- Начальная конфигурация коммутатора Cisco
- Язык программирования HCL
- Packer
- Управление файлами конфигурации. Chezmoi
Содержание:развернуть
- 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.xpython3 --version
— для Python 3.xpython3.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
- Скачайте файл get-pip.py и сохраните у себя на компьютере.
- Откройте командную строку и перейдите в папку, в которой сохранен
get-pip.py
. - В командной строке выполните команду:
python get-pip.py
илиpython3 get-pip.py
. - 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 может быть проблемой. Их много — сложно
отслеживать все новейшие версии, и даже когда вы решаете, что обновлять,
вам все равно придется обновлять каждую из них вручную.
Для решения этой проблемы был создан
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.
В процессе разработки программного обеспечения на Python часто возникает необходимость воспользоваться пакетом, который в данный момент отсутствует на вашем компьютере. О том, откуда взять нужный вам пакет и как его установить, вы узнаете из этого урока.
- Где взять отсутствующий пакет?
- Менеджер пакетов в Python – pip
- Установка pip
- Обновление pip
- Использование pip
- Установка пакета
- Удаление пакета
- Обновление пакетов
- Просмотр установленных пакетов
- Поиск пакета в репозитории
- Где еще можно почитать про работу с pip?
Где взять отсутствующий пакет?
Необходимость в установке дополнительного пакета возникнет очень быстро, если вы решите поработать над задачей, за рамками базового функционала, который предоставляет Python. Например: работа с web, обработка изображений, криптография и т.п. В этом случае, необходимо узнать, какой пакет содержит функционал, который вам необходим, найти его, скачать, разместить в нужном каталоге и начать использовать. Все эти действия можно сделать вручную, но этот процесс поддается автоматизации. К тому же скачивать пакеты с неизвестных сайтов может быть довольно опасно.
К счастью для нас, в рамках Python, все эти задачи решены. Существует так называемый Python Package Index (PyPI) – это репозиторий, открытый для всех Python разработчиков, в нем вы можете найти пакеты для решения практически любых задач. Там также есть возможность выкладывать свои пакеты. Для скачивания и установки используется специальная утилита, которая называется pip.
Менеджер пакетов в Python – pip
Pip – это консольная утилита (без графического интерфейса). После того, как вы ее скачаете и установите, она пропишется в PATH и будет доступна для использования.
Эту утилиту можно запускать как самостоятельно:
> pip <аргументы>
так и через интерпретатор Python:
> python -m pip <аргументы>
Ключ -m означает, что мы хотим запустить модуль (в данном случае pip). Более подробно о том, как использовать pip, вы сможете прочитать ниже.
Установка pip
При развертывании современной версии Python (начиная с Python 2.7.9 и Python 3.4),
pip устанавливается автоматически. Но если, по какой-то причине, pip не установлен на вашем ПК, то сделать это можно вручную. Существует несколько способов.
Универсальный способ
Будем считать, что Python у вас уже установлен, теперь необходимо установить pip. Для того, чтобы это сделать, скачайте скрипт get-pip.py
> curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
и выполните его.
> python get-pip.py
При этом, вместе с pip будут установлены setuptools и wheels. Setuptools – это набор инструментов для построения пакетов Python. Wheels – это формат дистрибутива для пакета Python. Обсуждение этих составляющих выходит за рамки урока, поэтому мы не будем на них останавливаться.
Способ для Linux
Если вы используете Linux, то для установки pip можно воспользоваться имеющимся в вашем дистрибутиве пакетным менеджером. Ниже будут перечислены команды для ряда Linux систем, запускающие установку pip (будем рассматривать только Python 3, т.к. Python 2 уже морально устарел, а его поддержка и развитие будут прекращены после 2020 года).
Fedora
Fedora 21:
> sudo yum install python3 python3-wheel
Fedora 22:
> sudo dnf install python3 python3-wheel
openSUSE
> sudo zypper install python3-pip python3-setuptools python3-wheel
Debian/Ubuntu
> sudo apt install python3-venv python3-pip
Arch Linux
> sudo pacman -S python-pip
Обновление pip
Если вы работаете с Linux, то для обновления pip запустите следующую команду.
> pip install -U pip
Для Windows команда будет следующей:
> python -m pip install -U pip
Использование pip
Далее рассмотрим основные варианты использования pip: установка пакетов, удаление и обновление пакетов.
Установка пакета
Pip позволяет установить самую последнюю версию пакета, конкретную версию или воспользоваться логическим выражением, через которое можно определить, что вам, например, нужна версия не ниже указанной. Также есть поддержка установки пакетов из репозитория. Рассмотрим, как использовать эти варианты.
Установка последней версии пакета
> pip install ProjectName
Установка определенной версии
> pip install ProjectName==3.2
Установка пакета с версией не ниже 3.1
> pip install ProjectName>=3.1
Установка Python пакета из git репозитория
> pip install -e git+https://gitrepo.com/ProjectName.git
Установка из альтернативного индекса
> pip install --index-url http://pypackage.com/ ProjectName
Установка пакета из локальной директории
> pip install ./dist/ProjectName.tar.gz
Удаление пакета
Для того, чтобы удалить пакет воспользуйтесь командой
> pip uninstall ProjectName
Обновление пакетов
Для обновления пакета используйте ключ –upgrade.
> pip install --upgrade ProjectName
Просмотр установленных пакетов
Для вывода списка всех установленных пакетов применяется команда pip list.
> pip list
Если вы хотите получить более подробную информацию о конкретном пакете, то используйте аргумент show.
> pip show ProjectName
Поиск пакета в репозитории
Если вы не знаете точное название пакета, или хотите посмотреть на пакеты, содержащие конкретное слово, то вы можете это сделать, используя аргумент search.
> pip search "test"
Где ещё можно прочитать про работу с pip?
В сети довольно много информации по работе с данной утилитой.
Python Packaging User Guide – набор различных руководств по работе с пакетами в Python
Документация по pip.
Статья на Geekbrains.
P.S.
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
<<< Python. Урок 15. Итераторы и генераторы Python. Урок 17. Виртуальные окружения>>>