我想在OSX Lion中使用matplotlib

0 投票
2 回答
3874 浏览
提问于 2025-04-17 08:32

我通过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

正如Ned Deily提到的,这个问题是因为MacPorts会安装一个独立的Python版本,而Mac电脑本身就自带了一个Python。

我建议你使用Homebrew,而不是MacPorts,这样可以避免类似的问题。Homebrew会尽量使用Mac自带的包。

另一个建议是,最好使用pip来管理Python包。它是easy_install的替代品,并且支持卸载包。使用像MacPorts或Debian的apt这样的包管理系统来管理Python包的好处在于,它们可以解决一些Python包依赖的其他C库问题。不过,如果某些Python包不在MacPorts或apt中,你就需要使用easy_installpip。通常同时使用两个包管理系统来管理你的Python包并不是个好主意。

4

为了确保环境兼容,MacPorts 的 Python 包会自动安装一个 MacPorts 版本的 Python。默认情况下,你可以通过 /opt/local/bin/python2.7 来使用它。在这里,你会找到 MacPorts 安装的 matplotlib 等库。而 /usr/bin/python 则会调用苹果自带的系统 Python 2.7.1。当你运行 sudo easy_install 时,其实是在使用苹果自带的 easy_install 命令,这个命令是和系统 Python 关联的。这就意味着你现在有两个 Python 2.7 的版本,每个版本都有自己独立的 matplotlib。这并没有什么问题,但你可能更希望只使用其中一个。你可以通过确保你的 SHELL 路径中 /opt/local/bin/usr/bin 之前,并使用 MacPorts 的 port select python python27 命令来将 MacPorts 的 Python 2.7 设置为默认版本。

撰写回答