При установке пакетов на сервере через pip стала появляться ошибка. Хотя ничего не обновлял, ранее установил python3, pip3 и virtualenv. Программы работали, но теперь при обновлении пакетов вылетала ошибка, связанная с pip.
Элементарно нельзя было запустить даже проверку версии pip. Переустановка не помогала. Спасибо другу, подсказал решение, его и опишу.
Описание ошибки pip (“ERROR: {exc}”)
Для одного проекта нужно было запустить venv (виртуальное окружение), но сервер не находил пакет. Ввожу чтобы установить его заново и столкнулся с ошибкой (хотя ранее точно его ставил и один проект на этом же сервере работает).

sys.stderr.write(f"ERROR: {exc}")
Дальше стал удалять старые версии, переустанавливать pip. Что было сделано:
- Удалил все версии pip (pip, pip3, pip3.5 в папке /usr/local/bin/ ; и также pip, pip-21dest.info в директории /usr/local/lib/python3.5/dist-packages).
- Удалил python3-pip (sudo apt remove python3-pip).
Ничего не помогало. Порядка 15 решений со stackoverflow тоже ничего не принесли.
Подумал, что возможно нужно установить новую версию python и соответственно pip. И спасибо моего знакомому, который подсказал как это сделать и предоставил подробную инструкцию.
Как обновить python и pip на сервере ubuntu
Здесь в решении также описывается как задать альтернативную версию python, которая будет запускаться при вызове python3. Поехали:
- Обновите систему:
sudo apt update && sudo apt upgrade -y
- Установите все необходимые компоненты:
sudo apt install build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev tk-dev libffi-dev
Тут никаких проблем не должно быть. Ранее я запускал команды с первичной установки (по инструкции с digitalocean), и на некоторых пакетах встречались ошибки.
Также смотрите за местом на диске! Мне пришлось почистить его. - Скачайте новую версию python 3 (я обновился на python 3.7.0):
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
- Разархивируйте и перейдите в папку:
tar xf Python-3.7.0.tar.xz cd Python-3.7.0
Выполняйте команды по очереди, где 2 и больше строк.
- Запустите build и “альтернативную” установку (еще один python 3):
./configure --enable-optimizations sudo make -j 8 sudo make altinstall
- Теперь прописываем порядок запуска для питона (python 3.7 будет запускаться заместо 3.5):
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.7 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2 sudo update-alternatives --config python3
- Возможно, если будет по-прежнему запускаться старая версия python, создайте ярлык:
sudo ln -s /usr/local/bin/python3.7 /usr/bin/py
- И приступаем к установке pip и virtualenv:
sudo chown -R $USER:$USER /usr/local/bin/ sudo chown -R $USER:$USER /usr/local/lib/python3.7/site-packages/ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3.7 get-pip.py pip3.7 install virtualenv virtualenvwrapper
Мы дали необходимые права, скачали pip, и установили виртуальное окружение.
После этого, я больше не встречался с ошибкой “ERROR: {exc}”, все модули устанавливались и обновлялись без проблем.
Как видите, по этой инструкции можно: установить дополнительную версию python3.*, установить или обновить pip, pip3, virtualenv, как с официальных, так и альтернативных источников. Будут вопросы – пишите в комментарии (а еще лучше в денежную форму благодарности справа).

