无法在Mac OS X上安装matplotlib

tch*_*ore 18 python macos matplotlib macports freetype

我正在尝试安装matplotlib,用于在Mac OS X上用Python绘制应用程序.当我运行"python setup.py install"时,它给了我很多错误:http://pastebin.com/u7fL37ic.

一个快速片段:

src/ft2font.cpp:2170: error: ‘FT_LOAD_TARGET_MONO’ was not declared in this scope
src/ft2font.cpp:2171: error: ‘FT_LOAD_TARGET_LCD’ was not declared in this scope
src/ft2font.cpp:2172: error: ‘FT_LOAD_TARGET_LCD_V’ was not declared in this scope
src/ft2font.cpp:2175: error: ‘_ft2Library’ was not declared in this scope
src/ft2font.cpp:2175: error: ‘FT_Init_FreeType’ was not declared in this scope
src/ft2font.cpp: In destructor ‘virtual ft2font_module::~ft2font_module()’:
src/ft2font.cpp:2186: error: ‘_ft2Library’ was not declared in this scope
src/ft2font.cpp:2186: error: ‘FT_Done_FreeType’ was not declared in this scope
lipo: can't figure out the architecture type of: /var/folders/Nj/Njnlp9qSF64sMESWcaDnk++++TI/-Tmp-//cchyYmM5.out
error: command 'gcc-4.0' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

我使用MacPorts安装了freetype,我认为这样可以解决问题,但没有运气.给我同样的错误.它看起来无法找到正确的freetype文件:

BUILDING MATPLOTLIB
        matplotlib: 1.0.0
            python: 2.6.5 (r265:79359, Mar 24 2010, 01:32:55)  [GCC
                    4.0.1 (Apple Inc. build 5493)]
          platform: darwin
REQUIRED DEPENDENCIES
             numpy: 1.5.0
         freetype2: found, but unknown version (no pkg-config)
                    * WARNING: Could not find 'freetype2' headers in any
                    * of '.', './freetype2'.
Run Code Online (Sandbox Code Playgroud)

我应该在哪里放置freetype文件以便找到它们?现在他们在/ opt/local/lib

有任何想法吗?

mho*_*son 33

问题的根源是freetype和libpng由XCode安装在非规范位置,在/ usr/X11而不是/ usr或/ usr/local中.

已经给出的所有答案都通过手动或使用像homebrew这样的包管理器重新构建freetype和libpng来解决问题.

但是,您可以通过简单地将现有的freetype/libpng标头和库符号链接到/ usr/local树中来获取matplotlib:

sudo mkdir -p /usr/local/include
sudo ln -s /usr/X11/include/freetype2/freetype /usr/local/include/freetype
sudo ln -s /usr/X11/include/ft2build.h /usr/local/include/ft2build.h
sudo ln -s /usr/X11/include/png.h /usr/local/include/png.h
sudo ln -s /usr/X11/include/pngconf.h /usr/local/include/pngconf.h
sudo ln -s /usr/X11/include/pnglibconf.h /usr/local/include/pnglibconf.h
sudo mkdir -p /usr/local/lib
sudo ln -s /usr/X11/lib/libfreetype.dylib /usr/local/lib/libfreetype.dylib
sudo ln -s /usr/X11/lib/libpng.dylib /usr/local/lib/libpng.dylib
Run Code Online (Sandbox Code Playgroud)

我更喜欢用pip构建python包,所以我会使用:

sudo pip install matplotlib
Run Code Online (Sandbox Code Playgroud)

如果您还没有pip,可以使用easy_install(OS X附带)安装它:

sudo easy_install pip
Run Code Online (Sandbox Code Playgroud)

我只在10.7(Lion)上测试了这个,但我怀疑它也适用于10.6.

这有点像黑客,但我发现它是最简单的方法来安装matplotlib与OS X附带的股票python框架.10.7中的股票python框架实际上是相当不错的,包括,为实例,一个与Apple优化的BLAS库(Accelerate)链接的numpy-1.5.1软件包:

dyldinfo -dylibs /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/linalg/lapack_lite.so 
for arch x86_64:
attributes     dependent dylibs
            /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
            /usr/lib/libSystem.B.dylib
Run Code Online (Sandbox Code Playgroud)

  • 更新:在OS X Mountain Lion(10.8)中,默认情况下不再安装X11,您需要安装XQuartz(请参阅support.apple.com/kb/HT5293).好消息是我找到了一种更简单的方法来安装matplotlib而不在/ usr/local中创建符号链接.如果您安装了pkg-config(例如通过自制程序),请运行"sudo PKG_CONFIG_PATH =/opt/X11/lib/pkgconfig pip install matplotlib",然后通过pkg-config从XQuartz中获取正确的依赖项(libpng,freetype). (7认同)
  • 更新:MacOS X Mavericks现在将这些项目安装在/ opt/X11而不是/ usr/X11中,所以通过(a)重新安装XCode cmd行工具,然后按照上面的方法更改每个ln -s中的源路径命令,我能够安装matplotlib. (3认同)

小智 8

很老,但是当我在Snow Leopard上遇到同样的问题时,我的搜索仍然会出现.

你说你在使用自制软件,所以你需要

brew link freetype
Run Code Online (Sandbox Code Playgroud)

安装后(使用"brew install freetype").

这遇到了这个错误.我用libpng做了同样的事情,导致安装成功.


小智 7

我最近获得了一台新的工作计算机(MacBook Pro OS 10.6.5),并希望在Python虚拟环境中安装numpy + scipy + matplotlib.我不是专家,但虚拟环境似乎允许您安装软件包,使它们与系统范围的软件包隔离,主要是通过巧妙地重新定义系统路径.因此,对于我正在处理的一个项目,需要这些软件包的某些版本,我可以安装它们一次,并在那里为该项目完成所有工作,而不依赖于我在环境之外进行的其他更改.

经过大量的反复试验,我能够构建一个Numpy 1.5.1,Scipy 0.8.0和Matplotlib 1.0.0的虚拟环境,所有这些都运行得很完美.这是如何做:

首先,安装以下四个包:

(我是新用户,因此我无法发布这些链接,抱歉!).

如果从源代码安装,请使用标准安装:

  • $ ./configure
  • $ make
  • $ sudo make install

接下来,下载numpy,scipy和matplotlib的源文件.

现在是时候在文件夹TESTENV中创建一个虚拟环境了:

$ virtualenv/path/to/dir/TESTENV

激活虚拟环境:

$来源./路径/到/ DIR/TESTENV /斌/启动

现在,python包将安装在TESTENV中,就好像它是根安装目录一样.对我有用的是执行:

$ python setupegg.py安装

在numpy,scipy和matplotlib源文件夹中(按此顺序).

希望有所帮助!


小智 0

您也可以考虑使用 Enthought 发行版(对于非商业用途甚至免费)它完全安装完毕,没有任何困难 http://www.enthought.com/products/getepd.php (我与 Enthought 没有任何关系 -我只是一个满意的用户)