我正在尝试升级我的 python matplotlib 但由于某种原因我无法升级。
我最初安装 matplotlib 时使用:
apt-get install python-matplotlib
这很好。然而它默认为1.1版本
然后我从网站下载了 1.2 源代码,然后提取 tar.gz 并运行:
sudo python setup.py build
sudo python setup.py install
在这一切之后,我进入 python2.7idle 并输入:
import matplotlib
print matplotlib.__version__
>>>1.1.1
所以看起来它没有更新。如何将 matplotlib 更新到 1.2 或更高版本?
答案1
这可能是您的 PYTHONPATH 环境变量存在问题,或者缺少该变量。使用apt-get
,matplotlib 将被安装到/usr
目录前缀中。所以你会发现整个包安装在像/usr/lib/python2.7/site-packages/matplotlib
.
您可以使用如下命令确认这一点:dpkg -L python-matplotlib
。
当您单独下载 matplotlib 源代码、使用上述命令自行构建和安装它时,您将把它安装到前缀中/usr/local
。这很好,因为您的系统库(在/usr
前缀中)由 管理dpkg
,并且您不想覆盖或干扰这些文件,因为担心破坏另一个依赖包或留下杂散的非托管文件。
现在,您可能正在使用系统安装的 python。它预装在(所有?)Linux 发行版上,那你为什么不呢?但这是安装在/usr
. Python 的默认模块搜索路径是根据其安装位置的前缀构建的。因此,你的系统 python(配置为--prefix=/usr
)默认情况下只会搜索安装在 中的模块/usr/lib/python2.7
,完全忽略那些手动安装在 中的模块/usr/local/lib/python2.7
。
因此,为了解决这个问题,这里有一些可能的解决方案:-
(不要这样做!)使用 . 构建并安装 matplotlib
--prefix=/usr
。编辑您的
PYTHONPATH
以包括/usr/local/lib/python2.7/site-packages
当它是您自己的计算机时,这是一个可行的解决方案。您以 root 用户身份安装软件包,然后编辑~/.bashrc
或/etc/bash.bashrc
导出 PYTHONPATH 环境变量。对于多用户计算机或服务器来说,这有点混乱,因为所有这些软件包都必须由 root 用户手动升级,这可能并不总是很方便。最好将其留给您的系统包管理器。用于
easy_install
安装 matplotlib (或任何库皮皮) 系统 Python 会在某个地方找到它。在这种情况下,它可能会抱怨您已经安装了它(因此您应该先使用 卸载它apt-get
)。easy_install -m matplotlib
PyPi 通常会保持最新的 Python 包版本。如果你必须在那里上传一个包(p*ss),你就会知道为什么,所以这是获取最新 python 包的可靠方法。您需要
distribute
安装该软件包 - 使用apt-get
.将 matplotlib 1.2 安装到您的用户目录中。当存储库更新到您需要的版本时,您可以稍后将其删除。
python setup.py install --user
后一种方法是我最喜欢的方法。我最近才发现它,但它不需要编辑任何系统或用户特定的配置文件或环境变量,不会干扰系统软件包,也不需要用户sudo
安装。
这将在~/.local/lib/python2.7
Linux 上安装 matplotlib;在~/Library/...
OS X 上,也可能在其他发行版的其他地方。无论哪种方式,所有平台都支持此方法,并且用户特定的模块将优先于系统范围的模块加载。
现在去享受 matplotlib 的乐趣吧。这是一个很棒的包!
PS 不要以 root 用户身份构建软件包。我认为将 root 拥有的文件保留在用户目录中是不好的做法。
PPS 您可以检查 matplotlib(或任何其他 python 模块)从 Python 解释器中加载的位置。例如:-
>>> import matplotlib
>>> print matplotlib.__file__
/usr/lib/python2.7/site-packages/matplotlib/__init__.pyc