2009-09-25 102 views
20

我已經殺死了半天,試圖在Snow Leopard上編譯python的matplotlib。我使用了Google,發現了這個有用的頁面(http://blog.hyperjeff.net/?p=160),但我仍然無法編譯它。我在該頁面上看到其他用戶的評論,所以我知道我並不孤單。在Snow Leopard上爲Python編譯Matplotlib

我已經獨立安裝了zlib,libpng和freetype。

我編輯的make.osx文件包含這個頂部:

PREFIX=/usr/local 

PYVERSION=2.6 
PYTHON=python${PYVERSION} 
ZLIBVERSION=1.2.3 
PNGVERSION=1.2.33 
FREETYPEVERSION=2.3.5 
MACOSX_DEPLOYMENT_TARGET=10.6 

## You shouldn't need to configure past this point 

PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" 
CFLAGS="-Os -arch x86_64 -arch i386 -I${PREFIX}/include" 
LDFLAGS="-arch x86_64 -arch i386 -L${PREFIX}/lib" 
CFLAGS_DEPS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX10.6.sdk" 
LDFLAGS_DEPS="-arch i386 -arch x86_64 -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX10.6.sdk" 

我然後運行:

sudo make -f make.osx mpl_build 

這給了我:

export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" &&\ 
    export MACOSX_DEPLOYMENT_TARGET=10.6 &&\ 
    export CFLAGS="-Os -arch x86_64 -arch i386 -I/usr/local/include" &&\ 
    export LDFLAGS="-arch x86_64 -arch i386 -L/usr/local/lib" &&\ 
    python2.6 setup.py build 

... snip ... 

gcc-4.2 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -Os -arch x86_64 -arch i386 -I/usr/local/include -pipe -DPY_ARRAYAUNIQUE_SYMBOL=MPL_ARRAY_API -I/Library/Python/2.6/site-packages/numpy/core/include -I. -I/Library/Python/2.6/site-packages/numpy/core/include/freetype2 -I./freetype2 -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c src/ft2font.cpp -o build/temp.macosx-10.6-universal-2.6/src/ft2font.o 
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for C/ObjC but not for C++ 
In file included from src/ft2font.h:13, 
       from src/ft2font.cpp:1: 
/usr/local/include/ft2build.h:56:38: error: freetype/config/ftheader.h: No such file or directory 

... snip ... 

src/ft2font.cpp:98: error: ‘FT_Int’ was not declared in this scope 
/Library/Python/2.6/site-packages/numpy/core/include/numpy/__multiarray_api.h:1174: warning: ‘int _import_array()’ defined but not used 
lipo: can't open input file: /var/tmp//ccDOGx37.out (No such file or directory) 
error: command 'gcc-4.2' failed with exit status 1 
make: *** [mpl_build] Error 1 

我剛剛輸了。

+0

'make.osx'會自動下載的FreeType /的libpng/zlib的。 – 2010-04-06 18:49:18

回答

7

根據您的錯誤信息,您已經缺少freetype標頭。你可以使用系統搜索功能找到它們嗎?我不會講使用預先構建的軟件包,因爲我喜歡撓撓我的腦海,也從頭開始編譯。

+0

謝謝whatnick。這幫助我編輯make.osx makefile。 – Greg 2009-09-25 13:55:12

0

我剛剛編譯。我在make.osx文件中的CFLAGS包含路徑中添加了freetype2。現在make.osx的頂部是:

PREFIX=/usr/local 

PYVERSION=2.6 
PYTHON=python${PYVERSION} 
ZLIBVERSION=1.2.3 
PNGVERSION=1.2.33 
FREETYPEVERSION=2.3.5 
MACOSX_DEPLOYMENT_TARGET=10.6 

## You shouldn't need to configure past this point 

PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" 
CFLAGS="-Os -arch x86_64 -arch i386 -I${PREFIX}/include -I${PREFIX}/include/freetype2" 
LDFLAGS="-arch x86_64 -arch i386 -L${PREFIX}/lib" 
CFLAGS_DEPS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX10.6.sdk" 
LDFLAGS_DEPS="-arch i386 -arch x86_64 -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX10.6.sdk" 

然後我運行這些命令,它編譯和安裝完美。

sudo make -f make.osx mpl_build 
sudo make -f make.osx mpl_install 
+0

那麼我得到了答案 - 現場。 – whatnick 2009-09-25 13:53:00

+0

你確實做了 - 非常感謝你! – Greg 2009-09-25 14:36:35

-1

你應該真的在matplotlib-users郵件列表上問這個問題。它由實際的matplotlib開發人員監控,而StackOverflow(AFAIK)則不是。

3

您還可以通過使用

$ python setup.py build 

與下面的補丁建立適用於setupext.py

Index: setupext.py 
=================================================================== 
--- setupext.py (revision 7917) 
+++ setupext.py (working copy) 
@@ -334,6 +334,8 @@ 

    module.include_dirs.extend(incdirs) 
    module.include_dirs.append('.') 
+ module.include_dirs.append('/usr/local/include') 
+ module.include_dirs.append('/usr/local/include/freetype2') 
    module.library_dirs.extend(libdirs) 

def getoutput(s): 
+0

這對我有用。 – Markus 2010-01-25 12:01:51

0

其他地方建議,MacPorts的工作在多種體系結構和優良的MacOSX版本+允許更新和更多:

$ port search matplot 
py-matplotlib @0.99.0 (python, graphics, math) 
    matlab-like syntax for creating plots in python 

py-matplotlib-basemap @0.99.4 (python, graphics, math) 
    matplotlib toolkit for plotting data on map projections 

py25-matplotlib @0.99.0 (python, graphics, math) 
    matlab-like syntax for creating plots in python 

py25-matplotlib-basemap @0.99.4 (python, graphics, math) 
    matplotlib toolkit for plotting data on map projections 

py26-matplotlib @0.99.0 (python, graphics, math) 
    matlab-like syntax for creating plots in python 

py26-matplotlib-basemap @0.99.4 (python, graphics, math) 
    matplotlib toolkit for plotting data on map projections 

Found 6 ports. 
$ 

在你的情況下,只需發出:

$ sudo port install py26-matplotlib 

其特點是MacOSX的後端(天然可可)作爲默認

1

對於Python.org 2.7.1:

我用的指令的混合。它基本上使用的libpng在OSX的在/ usr/X11

  1. 下載,建造和安裝工作(make install)並對FreeType2 v2.4.4 &的zlib 1.2.5。 沒有使用make deps。

  2. 修改後的setupext。PY有

    module.include_dirs.extend(incdirs) 
    module.include_dirs.append('.') 
    module.include_dirs.append('/usr/local/include') 
    module.include_dirs.append('/usr/local/include/freetype2') 
    module.include_dirs.append('/usr/X11/include') 
    module.library_dirs.extend(libdirs) 
    module.library_dirs.append('/usr/local/lib') 
    module.library_dirs.append('/usr/X11/lib') 
    
  3. 修改make.osx包括同在/ usr/X11信息,PNG版本1.2.5是OSX 10.6.6當前本地

    PYVERSION=2.7 
    
    PYTHON=python${PYVERSION} 
    
    ZLIBVERSION=1.2.5 
    
    PNGVERSION=1.2.44 
    
    FREETYPEVERSION=2.4.4 
    
    MACOSX_DEPLOYMENT_TARGET=10.6 
    
    OSX_SDK_VER=10.6 
    
    ARCH_FLAGS="-arch i386-arch x86_64" 
    
    PREFIX=/usr/local 
    
    MACPREFIX=/usr/X11 
    
    PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" 
    
    CFLAGS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -I${MAXPREFIX}/include -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk" 
    
    LDFLAGS="-arch i386 -arch x86_64 -L${PREFIX}/lib -L/usr/X11/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk" 
    
    FFLAGS="-arch i386 -arch x86_64" 
    
  4. 那麼標準

    sudo make -f make.osx mpl_build 
    sudo make -f make.osx mpl_install 
    sudo python setup.py install 
    
  5. Crikey ...似乎工作。現在有10.6.6

圖片模塊(成像-1.7.7)沒關係,只要你安裝的libjpeg的作品圖片& MDP & pylab & matplotlib與2.7.1。我用jpegsrc.v8c,它似乎很開心。

6

該解決方案爲我工作在OSX 10.8.3:

ln -s /usr/local/include/freetype2/freetype/ /usr/include/freetype 

(信用真正接觸到:http://simpleyuan.blogspot.com/2012/08/matplotlib-error-mac-os-x.html

+0

此解決方案適用於OSX 10.8.3:ln -s/opt/local/include/freetype2/freetype/usr/include/freetype' – scls 2013-09-07 07:05:52

+4

For Homebrew:'ln -s/usr/local/include/freetype2// usr/include/freetype' – sakra 2013-12-17 12:08:16