簡體   English   中英

在Snow Leopard上為Python編譯Matplotlib

[英]Compile Matplotlib for Python on Snow Leopard

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

我已經獨立安裝了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

我迷失了。

根據您的錯誤消息,您丟失了freetype標頭。 您能使用系統搜索功能找到它們嗎? 我不打算使用預先構建的軟件包,因為我喜歡從頭開始編寫並從頭開始編譯。

這個解決方案適用於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

您也可以使用構建

$ 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):

對於Python.org 2.7.1:

我使用了混合的說明。 它基本上可以在OSX的/ usr / X11中使用libpng

  1. 下載,構建和安裝(make install)freetype2 v2.4.4&zlib v1.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的Image&MDP&pylab&matplotlib,2.7.1

只要安裝libjpeg,映像模塊(Imaging-1.7.7)就可以正常工作。 我使用了jpegsrc.v8c ,看起來很開心。

我剛剛編譯好了。 我在make.osx文件中的CFLAGS的include路徑中添加了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

正如其他地方所建議的那樣,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后端(本機可可)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM