Categories: Python

Как обновить pip (error exc), установить virtualenv или поставить альтернативную версию python

При установке пакетов на сервере через pip стала появляться ошибка. Хотя ничего не обновлял, ранее установил python3, pip3 и virtualenv. Программы работали, но теперь при обновлении пакетов вылетала ошибка, связанная с pip.

Элементарно нельзя было запустить даже проверку версии pip. Переустановка не помогала. Спасибо другу, подсказал решение, его и опишу.

Описание ошибки pip («ERROR: {exc}»)

Для одного проекта нужно было запустить venv (виртуальное окружение), но сервер не находил пакет. Ввожу чтобы установить его заново и столкнулся с ошибкой (хотя ранее точно его ставил и один проект на этом же сервере работает).

Ошибка pip при установке venv на сервере ubuntu
sys.stderr.write(f"ERROR: {exc}")

Дальше стал удалять старые версии, переустанавливать pip. Что было сделано:

  1. Удалил все версии pip (pip, pip3, pip3.5 в папке /usr/local/bin/ ; и также pip, pip-21dest.info в директории /usr/local/lib/python3.5/dist-packages).
  2. Удалил python3-pip (sudo apt remove python3-pip).

Ничего не помогало. Порядка 15 решений со stackoverflow тоже ничего не принесли.

Подумал, что возможно нужно установить новую версию python и соответственно pip. И спасибо моего знакомому, который подсказал как это сделать и предоставил подробную инструкцию.

Как обновить python и pip на сервере ubuntu

Здесь в решении также описывается как задать альтернативную версию python, которая будет запускаться при вызове python3. Поехали:

  1. Обновите систему:
    sudo apt update && sudo apt upgrade -y
  2. Установите все необходимые компоненты:
    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), и на некоторых пакетах встречались ошибки.
    Также смотрите за местом на диске! Мне пришлось почистить его.

  3. Скачайте новую версию python 3 (я обновился на python 3.7.0):
    wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
  4. Разархивируйте и перейдите в папку:
    tar xf Python-3.7.0.tar.xz
    cd Python-3.7.0

    Выполняйте команды по очереди, где 2 и больше строк.

  5. Запустите build и «альтернативную» установку (еще один python 3):
    ./configure --enable-optimizations
    sudo make -j 8
    sudo make altinstall
  6. Теперь прописываем порядок запуска для питона (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
    
  7. Возможно, если будет по-прежнему запускаться старая версия python, создайте ярлык:
    sudo ln -s /usr/local/bin/python3.7 /usr/bin/py
  8. И приступаем к установке 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, как с официальных, так и альтернативных источников. Будут вопросы — пишите в комментарии (а еще лучше в денежную форму благодарности справа).

veniamin

Recent Posts

Как заработать токен NOT за стейкинг BNB или FDUSD

Очень много разговоров в последнее время за токен NOT. Много бирж будут делать листинг токена,…

6 месяцев ago

Как заработать TON и NOT за стейкинг в телеграм

Телеграм недавно запустил возможность стейкать (замораживать) USDT и получать за это их валюту TON. Очень…

6 месяцев ago

Бонус 100 USDT +10 BUSD от Binance

Биржа криптовалют Binance проводит сейчас промо-акцию: новым пользователям дают ваучеры в сумме 110 долларов. Деньги…

3 года ago

Как парсить длительность видео youtube на php в привычном виде

Самый главный момент в работе с youtube - это получить ключ api через консоль разработчика…

3 года ago

Как удалить чужую сессию пользователя в ubuntu (linux)

Арендую сервер для небольшого проекта на python. И вот приходит мне уведомление, что за сутки…

3 года ago

Как наложить watermark на видео в python windows массово

Тестирую одну схему, и нужно на много видео наложить watermark. Решил делать через Python 3,…

3 года ago