При установке пакетов на сервере через pip стала появляться ошибка. Хотя ничего не обновлял, ранее установил python3, pip3 и virtualenv. Программы работали, но теперь при обновлении пакетов вылетала ошибка, связанная с pip.
Элементарно нельзя было запустить даже проверку версии pip. Переустановка не помогала. Спасибо другу, подсказал решение, его и опишу.
Описание ошибки pip («ERROR: {exc}»)
Для одного проекта нужно было запустить venv (виртуальное окружение), но сервер не находил пакет. Ввожу чтобы установить его заново и столкнулся с ошибкой (хотя ранее точно его ставил и один проект на этом же сервере работает).
1 | 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. Поехали:
- Обновите систему:1sudo apt update && sudo apt upgrade -y
- Установите все необходимые компоненты:1sudo 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):1wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
- Разархивируйте и перейдите в папку:12tar xf Python-3.7.0.tar.xzcd Python-3.7.0
Выполняйте команды по очереди, где 2 и больше строк. - Запустите build и «альтернативную» установку (еще один python 3):123./configure --enable-optimizationssudo make -j 8sudo make altinstall
- Теперь прописываем порядок запуска для питона (python 3.7 будет запускаться заместо 3.5):123sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.7 1sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2sudo update-alternatives --config python3
- Возможно, если будет по-прежнему запускаться старая версия python, создайте ярлык:1sudo ln -s /usr/local/bin/python3.7 /usr/bin/py
- И приступаем к установке pip и virtualenv:12345sudo 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.pypython3.7 get-pip.pypip3.7 install virtualenv virtualenvwrapper
Мы дали необходимые права, скачали pip, и установили виртуальное окружение.
После этого, я больше не встречался с ошибкой «ERROR: {exc}», все модули устанавливались и обновлялись без проблем.
Как видите, по этой инструкции можно: установить дополнительную версию python3.*, установить или обновить pip, pip3, virtualenv, как с официальных, так и альтернативных источников. Будут вопросы — пишите в комментарии (а еще лучше в денежную форму благодарности справа).
0 Comments