Управление пакетами в Python
Краткий справочник по работе с пакетами Python.
Способы установки python-пакетов
С помощью системного менеджера пакетов APT или YUM
sudo yum install python3-requests
С помощью python-модуля pip
Если на машине установлена только одна версия python, или установка производится в активированном виртуальном окружении, то можно установить пакет/ы следующим образом:
pip install wheel requests
Узнать к какой версии Python принадлежит pip
:
[dmr@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:
[dmr@wks1 ~]$ mkdir -p ~/pythonprojects/airflow
[dmr@wks1 ~]$ cd ~/pythonprojects/airflow
[dmr@wks1 ~]$ python3.6 -m venv .
[dmr@wks1 ~]$ source bin/activate
(airflow) [dmr@wks1 ~]$ pip -V
pip 18.1 from /root/pythonprojects/airflow/lib64/python3.6/site-packages/pip (python 3.6)
(airflow) [dmr@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