我从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,我是否必须重新定义包含路径?
你能帮帮我吗?
答案 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_install
或pip
。使用两个打包系统同时管理你的python包通常不是一个好主意。