我想在osx lion中使用matplotlib

时间:2011-12-17 06:42:02

标签: python matplotlib osx-lion

我从macports安装了matplotlib,python的版本是2.7.1。

$ sudo port install py27-matplotlib py27-matplotlib-basemap

我在下面写了一个示例程序。

#!/usr/bin/python
# -*- coding: utf-8 -*-

from pylab import *
plot([1,2,3])
show()

但是这对错误日志“没有名为pylab的模块”没有正常工作。

我尝试了easy_install。

$ sudo easy_install matplotlib

在这种情况下,我的程序正常运行,没有错误。

这两种情况有什么区别(macports和easy_install)?

我认为matplotlib的版本在两种情况下是相同的。

如果是macports,我是否必须重新定义包含路径?

你能帮帮我吗?

2 个答案:

答案 0 :(得分:4)

为确保兼容的环境,MacPorts Python软件包会自动安装MacPorts Python。默认情况下,您可以通过/opt/local/bin/python2.7调用它。在那里你会发现安装了MacPorts matplotlib等。 /usr/bin/python将调用Apple提供的系统Python 2.7.1,当您运行sudo easy_install时,您使用的是Apple提供的与系统Python相关联的easy_install命令。这意味着您现在安装了两个Python 2.7实例,每个实例都有一个单独的matplotlib版本。这没有什么不对,但你可能想要坚持一个或另一个。您可以通过确保您的SHELL路径在/opt/local/bin之前/usr/bin并使用MacPorts port select python python27命令,将MacPorts Python 2.7作为默认设置。

答案 1 :(得分:0)

如Ned Deily所述,问题是由于MacPorts安装了一个单独的Python,即使OS X也有自己的版本。

我建议你使用Homebrew而不是MacPorts来避免这样的问题。如果可能,Homebrew将在OS X上使用可用的包。

另一个建议是,最好使用pip来管理Python包,它是easy_install的替代品,并支持卸载包。使用打包系统(如MacPorts,Debian的apt)来管理python包的好处是,如果Python包依赖于其他C库,它们可以解决依赖关系。但是,如果某些Python软件包未包含在MacPorts或apt中,则需要解析为easy_installpip。使用两个打包系统同时管理你的python包通常不是一个好主意。