Установка пакетов с помощью pip
Пакеты устанавливаются с помощью пип. Например, так: pip install Django . В третьем Питоне пип – часть стандартной библиотеки. Его можно запустить так: python -m pip .
По умолчанию пип ищет нужный модуль на PyPI, сборнике всех питонячьих пакетов. Этим его возможности не ограничиваются: пакеты можно устанавливать из локальных файлов или напрямую с GitHub.
Пип умеет не только устанавливать, но и удалять, искать и обновлять пакеты.
- How to use Pip and PyPI (простой туториал на английском).
- Pip Quickstart (страница из документации Пипа).
- Installing Packages (подробный обзор всех способов установки пакетов).
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Установка пакетов Python из локальной файловой системы в virtualenv с помощью pip
Одна из распространенных проблем, с которой сталкиваются начинающие разработчики Python, заключается в установке пакетов с помощью pip из локальной файловой системы. Допустим, у разработчика есть пакет, расположенный в определенном каталоге локальной системы, например, /home/user/mypackage/mypackage-1.0.0.tar.gz . Теперь разработчик хочет установить этот пакет в виртуальную среду.
Существует способ указать pip установить пакет из локального файла, например, можно использовать команду pip install /home/user/mypackage/mypackage-1.0.0.tar.gz . Однако интересует вопрос: можно ли настроить pip так, чтобы он автоматически искал пакеты в определенном месте, если была введена команда pip install mypackage ?
Чтобы понять, как это сделать, нужно разобраться, как работает pip. Pip ищет пакеты на PyPI (Python Package Index) по умолчанию. Однако pip также поддерживает использование других источников, таких как локальные каталоги, VCS, архивы и т.д., которые могут быть указаны в параметрах командной строки или в файле конфигурации.
Если нужно использовать локальный каталог в качестве места поиска пакетов, можно добавить следующую строку в файл pip.conf (создать его, если он не существует):
[global] extra-index-url = file:///home/user/mypackage
Этот файл должен быть размещен в домашнем каталоге пользователя ( ~/.pip/pip.conf для Unix-подобных систем или %HOME%\pip\pip.ini для Windows) или в каталоге виртуального окружения.
Теперь pip будет искать пакеты на PyPI и в указанном локальном каталоге при выполнении команды pip install .
Это решение позволяет создать гибкую среду разработки, где пакеты могут быть установлены из различных источников в зависимости от потребностей.
Как установить пакеты для Python 3.6 в CentOS 7?¶
Установка менеджера пакетов pip и пакетов Python 3.6 в случае их отсутствия в репозитории операционной системы¶
- Скачайте пакет get-pip.py :
wget https://bootstrap.pypa.io/get-pip.py
sudo python3.6 get-pip.py
python36 -m pip install [Package_to_install]
Установка менеджера пакетов pip и пакетов Python 3.6 в виртуальном окружении¶
- Создайте виртуальное окружение:
python36 -m venv env --without-pip
source env/bin/activate
curl https://bootstrap.pypa.io/get-pip.py | python3
pip3 install [Package_to_install]
Управление пакетами в Python
Если на машине установлена только одна версия python, или установка производится в активированном виртуальном окружении, то можно установить пакет/ы следующим образом:
pip install wheel requests
Узнать к какой версии Python принадлежит pip :
[eugene@wks1 ~]$ pip -V pip 20.3.4 from /usr/lib/python2.7/site-packages/pip (python 2.7)
Исключающее ошибку в выборе версии Python, установка пакетов с использованием pip :
python3.8 -m pip install airflow
Ручная сборка python-пакета
Установка пакетов в виртуальное окружение
Создадим каталог для Python-проекта, где развернём виртуальное окружение, активируем его, после чего установим пакет wheel:
[eugene@wks1 ~]$ mkdir -p ~/pythonprojects/airflow [eugene@wks1 ~]$ cd ~/pythonprojects/airflow [eugene@wks1 ~]$ python3.6 -m venv . [eugene@wks1 ~]$ source bin/activate (airflow) [eugene@wks1 ~]$ pip -V pip 18.1 from /root/pythonprojects/airflow/lib64/python3.6/site-packages/pip (python 3.6) (airflow) [eugene@wks1 ~]$ pip install wheel Collecting wheel Using cached wheel-0.37.1-py2.py3-none-any.whl (35 kB) Installing collected packages: wheel Successfully installed wheel-0.37.1
Адреса директорий с установленными пакетами
- Пакеты, добавляемые через yum , устанавливаются в зависимости от версии Python в каталог /usr/lib/python3.x и доступны для всей системы. Напомню, что пакеты устанавливаемые с помощью pip install или python3 -m pip install из-под ‘root’а , устанавливаются также в /usr/lib/python3.x . Чтобы исключить такое поведение, необходимо устанавливать такие пакеты с опцией —user . В этом случае, сам пакет установится в /root/.local/lib/python3.6 . Исполняемые же файлы размещаются в /root/.local/bin . Системные пакеты останутся нетронутыми, как и их зависимости.
- Пакеты, добавляемые через sudo pip install , размещаются там же, как в примере выше и переписывают файлы, установленные через yum .
- Пакеты, добавляемые из-под ‘root’а через sudo pip install —user , устанавливаются в зависимости от версии Python, например в /root/.local/lib/python3.8 , и доступны только для аккаунта root .
- Пакеты, добавляемые через pip install , устанавливаются в зависимости от версии Python, например в ~/.local/lib/python3.8 , то есть в домашний каталог пользователя и доступны только пользователю.
- Пакеты, устанавливаемые в виртуальном окружении, размещаются в этом же каталоге, где развёрнут ‘venv’, точнее в подкаталоге ./lib/python3.8 .
Способы обновления пакетов
Обновление pip
Запуск из-под обычного пользователя:
pip install --upgrade pip
Запуск из-под ‘root’а:
pip install --user --upgrade pip
Принудительное обновление пакета, который установлен через yum
ERROR: Cannot uninstall 'systemd-python'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
pip install --ignore-installed systemd-python
Способы удаления всех пакетов
Способ с сохранением списка пакетов
Остаётся возможность восстановления всех пакетов из списка. Сохраняем список, удаляем пакеты, устанавливаем пакеты:
pip freeze > requirements.txt pip uninstall -r requirements.txt -y pip install -r requirements.txt
Удаление всех пакетов без сохранения списка
pip uninstall -y -r <(pip freeze)
pip freeze | xargs pip uninstall -y
