Как я могу обновить Matplotlib для Python3, используя pip на Ubuntu?

Я на Ubuntu 16.04.4 LTS. В настоящее время учится Юлия. Юлия использует PyPlot в качестве бэкенда для построения графиков. PyPlot требует наличия Python и matplotlib, установленных в системе.

Моя Ubuntu шла с обоими установленными Python(2 и 3). Я установил Matplotlib с помощью этой команды sudo apt-get install python3-matplotlib, Я проверил версию Matplotlib, и это Matplotlib 1.5.1. Но всякий раз, когда я пытаюсь построить с использованием PyPlot в качестве бэкэнда julia> pyplot(),

Вывод Юлии: ПРЕДУПРЕЖДЕНИЕ: вы используете Matplotlib 1.5.1, который больше не поддерживается официально сообществом Plots. Чтобы обеспечить плавную интеграцию Plots.jl, обновите вашу библиотеку Matplotlib до версии>= 2.0.0

Таким образом, я попытался обновить matplotlib с помощью pip, и он говорит, что моя версия matplotlib актуальна. Из вывода команды pip sudo pip install --upgrade matplotlib является:

Каталог "/home/yousuf/.cache/pip/http" или его родительский каталог не принадлежат текущему пользователю, и кэш отключен. Пожалуйста, проверьте разрешения и владельца этого каталога. Если вы выполняете pip с помощью sudo, вам может потребоваться флаг -H у sudo. Каталог /home/yousuf/.cache/pip или его родительский каталог не принадлежат текущему пользователю, и колеса кэширования отключены. проверьте разрешения и владельца этого каталога. Если вы выполняете pip с помощью sudo, вам может потребоваться флаг -H у sudo. Требование уже обновлено: matplotlib в /usr/local/lib/python2.7/dist-packages Требование уже обновлено: numpy>=1.7.1 в /usr/local/lib/python2.7/ dist-пакеты (из matplotlib) Требование уже обновлено: шесть>=1.10 в /usr/local/lib/python2.7/dist-packages (из matplotlib) Требование уже обновлено: python-dateutil>=2.1 в /usr/local/lib/python2.7/dist-packages (из matplotlib) Требование уже обновлено: backports.functools_lru_cache в /usr/local/lib/python2.7/dist-packages (из matplotlib)) Требование уже обновлено: subprocess32 в /usr/local/lib/python2.7/dist-packages (из matplotlib) Требование уже обновлено: pytz в /usr/local/lib/python2.7/ dist-packages (из matplotlib) Требование уже обновлено: cycler>=0.10 в /usr/local/lib/python2.7/dist-packages (from matplotlib) Требование уже обновлено: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 в /usr/local/lib/python2.7/dist-packages (из matplotlib)

Похоже, из этого вывода pip пытается обновить matplotlib для Python2, и 1.5.1 является его последней версией. Но Джулия и PyPlot используют Python3, как я настроил, чтобы использовать его.

2 ответа

Я нашел решение с помощью pip3. Чтобы установить pip3 в Ubuntu:

sudo apt install python3-pip

Теперь обновите matplotlib для Python 3.xx, используя pip3:

sudo pip3 install --upgrade matplotlib

sudo apt-get update

Тебе хорошо идти.

Если вы установите matplotlib с помощью apt-get, вы не должны мешать установленной версии. Я имею в виду, что вы не должны sudo pip3 install --upgrade matplotlib так как это может иметь другие побочные эффекты, когда вы sudo apt-get dist-upgrade позже.

Вы бы лучше использовать pip3 install --user --upgrade matplotlib держать пакеты в вашем местном /home/<user>/.local/{bin,lib,etc,share} папки правильно. Таким образом, ваши дистрибутивы Python будут использовать последние установленные пакеты, и у вашего менеджера пакетов не будет никаких проблем позже.

РЕДАКТИРОВАТЬ. sudo apt-get update не обновляет пакеты Он просто обновляет кэш вашего менеджера пакетов, т. Е. Извлекает информацию о последней версии для предоставленных пакетов Ubuntu. sudo apt-get dist-upgrade установит все обновления. И эта команда может иметь побочные эффекты, такие как сбои и / или замена вашего sudo pip3 install --upgrade matplotlib установленная версия matplotlib, Как правило, хорошей практикой является позволить менеджеру пакетов выполнять свою работу при установке пакетов на системном уровне.

Сначала удалите старую версию, используя:

pip uninstall matplotlib

Затем установите последнюю версию, используя:

pip install matplotlib

Matplotlib будет обновлен до последней версии. Вы можете проверить, используя:

pip list
Другие вопросы по тегам