在雪豹上编译Python的Matplotlib
我花了半天时间在雪豹上为python编译matplotlib。我用过谷歌,找到了这个有用的页面(),但我仍然无法编译它。我在那个页面上看到其他用户的评论,所以我知道我并不孤单 我已经独立安装了zlib、libpng和freetype 我编辑了make.osx文件以在顶部包含以下内容:在雪豹上编译Python的Matplotlib,python,osx-snow-leopard,numpy,compilation,matplotlib,Python,Osx Snow Leopard,Numpy,Compilation,Matplotlib,我花了半天时间在雪豹上为python编译matplotlib。我用过谷歌,找到了这个有用的页面(),但我仍然无法编译它。我在那个页面上看到其他用户的评论,所以我知道我并不孤单 我已经独立安装了zlib、libpng和freetype 我编辑了make.osx文件以在顶部包含以下内容: PREFIX=/usr/local PYVERSION=2.6 PYTHON=python${PYVERSION} ZLIBVERSION=1.2.3 PNGVERSION=1.2.33 FREETYPEVERS
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标题。您可以使用系统搜索功能找到它们吗。我不会讲如何使用预构建的包,因为我喜欢从头开始就动手编译。我刚把它编译好。我在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
您应该在matplotlib用户邮件列表中询问这个问题。它由实际的matplotlib开发人员监控,而StackOverflow(AFAIK)则不是
$ 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):
正如其他地方所建议的,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
Python.org 2.7.1默认使用macosx后端(本机cocoa):
我混合使用了一些说明。它基本上是通过在OSX的/usr/X11中使用libpng工作的
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')
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"
sudo make -f make.osx mpl_build
sudo make -f make.osx mpl_install
sudo python setup.py install
只要安装libjpeg,图像模块(Imaging-1.7.7)就可以正常工作。我使用了
jpegsrc.v8c
,它看起来很开心。这个解决方案在OSX 10.8.3上对我有效:
ln -s /usr/local/include/freetype2/freetype/ /usr/include/freetype
(值得称赞的是:)然后我当场得到了答案。
make.osx
将自动下载freetype/libpng/zlib。这个解决方案在osx 10.8.3上对我有效:ln-s/opt/local/include/freetype2/freetype//usr/include/freetype
对于自制:ln-s/usr/local/include/freetype2//usr/freetype