2011-12-17 71 views
0

我從macports安裝了matplotlib,python的版本是2.7.1。我想在osx lion中使用matplotlib

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

我在下面寫了一個示例程序。

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

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

但是,這個錯誤日誌「no module named pylab」無法正常工作。

我嘗試了easy_install。

$ sudo easy_install matplotlib 

在這種情況下,我的程序工作正常,沒有錯誤。

這兩種情況(macports和easy_install)有什麼區別?

我認爲matplotlib的版本在兩種情況下是相同的。

在macports的情況下,我是否必須重新定義包含路徑?

你能幫我嗎?

+0

您是否閱讀過這篇文章:http://matplotlib.sourceforge.net/faq/installing_faq.html#os-x-notes – Blender 2011-12-17 07:04:09

回答

4

爲確保兼容環境,MacPorts Python軟件包會自動安裝MacPorts Python。默認情況下,您可以通過/opt/local/bin/python2.7調用它。這就是你會發現安裝了MacPorts的地方matplotlib et al。 /usr/bin/python將調用Apple提供的系統Python 2.7.1,並且在運行sudo easy_install時,您正在使用Apple提供的與系統Python關聯的easy_install命令。這意味着您現在已經安裝了兩個Python 2.7實例,每個實例都有一個單獨版本matplotlib。這沒什麼錯,但你可能想堅持一個或另一個。通過確保您的SHELL路徑在/usr/bin之前以及使用MacPorts port select python python27命令,可以使MacPorts Python 2.7成爲您的默認設置。

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包通常不是一個好主意。

+0

OP的唯一問題是使用不正確的shebang行或以其他方式調用系統Python,而不是MacPorts之一。 MacPorts提供`pip`端口來安裝尚未作爲端口提供的Python包。使用Homebrew並不是解決兼容性問題的神奇解決方案,可以看到許多關於SO的問題。通常情況下,使用Apple提供的系統Python並不是一個好主意。 – 2011-12-17 10:24:21