Как я могу обновить 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