使用pip在virtualenv中更新matplotlib

16

我正在尝试在Virtualenv中更新我的matplotlib,现在似乎一切都崩溃了:(
到目前为止,我所做的基本上是:

source ~/myenv/bin/activate
pip install -U matplotlib

之前我用的是 matplotlib 1.3,现在如果我激活 py 虚拟环境并检查 matplotlib version,它会显示为 2.1

但是我无法从 matplotlib 中导入 Axes3D

>>> import importlib
>>> importlib.import_module('mpl_toolkits.mplot3d').__path__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/nld/python-2.7.6-freya/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/usr/vir_python/lib/python2.7/site-packages/mpl_toolkits/mplot3d/__init__.py", line 6, in <module>
    from .axes3d import Axes3D
  File "/home/usr/vir_python/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axes3d.py", line 32, in <module>
    from matplotlib.cbook import _backports
ImportError: cannot import name _backports

我正在使用Linux平台,并且使用Python 2.7。

进一步的问题是,我发现,

如果我只是打开虚拟的Python,而没有激活虚拟环境,我得到的是matplotlib 2.1

$:~> myenv/bin/python 
Python 2.7.6 (default, Apr 15 2014, 11:17:36) 
[GCC 4.3.4 [gcc-4_3-branch revision 152973]] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> matplotlib.__version__
'2.1.0'

但如果我激活虚拟环境,然后通过 python 命令打开虚拟 Python 环境,我会得到 matplotlib 1.3.1 或旧版本的 matplotlib。

$:~> source myenv/bin/activate
(vir_python)$:~> myenv/bin/python
Python 2.7.6 (default, Apr 15 2014, 11:17:36) 
[GCC 4.3.4 [gcc-4_3-branch revision 152973]] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> matplotlib.__version__
'1.3.1'

根据Karthik的建议,我做了如下操作:

首先激活虚拟Python环境

(vir_python) $: pip install matplotlib==2.1.0
(vir_python) $: pip freeze
backports.functools-lru-cache==1.4
backports.ssl-match-hostname==3.4.0.2
cycler==0.10.0
imageio==2.1.2
Jinja2==2.7.2
MarkupSafe==0.19
matplotlib==1.3.1
mpi4py==2.0.0
nose==1.3.1
numpy==1.12.0
olefile==0.44
pandas==0.19.2
Pillow==4.0.0
pyparsing==2.0.1
python-dateutil==2.6.0
pytz==2016.10
scipy==0.19.0
six==1.10.0
subprocess32==3.2.7
svg.path==1.1
tornado==3.2
virtualenv==1.11.4
2个回答

22

您的虚拟环境中已经安装了本地的matplotlib.

在激活虚拟环境后,可以使用以下命令升级matplotlib:

pip install matplotlib==2.1.0

或者

pip install --upgrade matplotlib


我应该使用 myenv/bin/pip 中的 pip 还是通常的 pip - jkhadka
我已经这样做了,但在虚拟 Python 中仍然显示 matplotlib 版本为 1.3.1 - jkhadka
我需要在我的 .bashrc 文件中添加任何内容来使更改生效吗? - jkhadka
#1. 你必须在你的虚拟环境中使用pip。 #2. pip freeze命令的输出是什么? #3. 不,你不需要在.bashrc文件中添加任何内容。 - Sivaswami Jeganathan
我添加了pip freeze命令的输出结果。 - jkhadka

12
plt.__version__
>> 3.0.0

这是我系统中的当前版本matplotlib。

在终端中,请输入以下命令:

$source activate envname
$pip install --upgrade matplotlib

在Python提示符中,

import matplotlib as plt
plt.__version__
>> 3.0.2

更新现有版本


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接