Posted in

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

Решение ошибки обновления pip
Устанавливаем и обновляем pip и virtualenv. Ставим дополнительную версию python3

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

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

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

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

Ошибка pip при установке 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, как с официальных, так и альтернативных источников. Будут вопросы – пишите в комментарии (а еще лучше в денежную форму благодарности справа).

Leave a Reply

Your email address will not be published. Required fields are marked *