无法在Mac OS X上安装matplotlib

时间:2010-11-04 00:45:46

标签: python macos matplotlib macports freetype

我正在尝试在Mac OS X上安装matplotlib以在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

我使用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'.

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

有什么想法吗?

14 个答案:

答案 0 :(得分:33)

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

已经给出的所有答案都是通过手动或使用像自制软件包这样的软件包管理器重新构建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

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

sudo pip install matplotlib

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

sudo easy_install pip

我只在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

答案 1 :(得分:8)

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

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

brew link freetype

安装后(使用“brew install freetype”)。

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

答案 2 :(得分: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

激活虚拟环境:

$来源。 /路径/到/目录/ TESTENV / bin中/激活

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

$ python setupegg.py install

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

希望有所帮助!

答案 3 :(得分:4)

尝试修改here。我的笔记here

答案 4 :(得分:3)

我是这样做的:

$ sudo make -f make.osx fetch deps mpl_build mpl_install

这会将其安装在/lib/python2.6/site-packages中,只需将其内容移至/Library/Python/2.6/site-packages/以保持一致。

答案 5 :(得分:3)

我在尝试安装matplotlib时遇到了同样的问题。在尝试了上述一些解决方案之后,我就跑了

brew install freetype

然后,安装进行得很顺利,直到遇到未找到的png.h。我跑了

brew install libpng

安装完成并安装了matplotlib。

(在OS X 10.8.4上)

答案 6 :(得分:2)

我强烈推荐StrongInference Scipy Superpack。它适用于10.6 Snow Leopard上内置的Apple提供的Python,现在可以使用10.9。它对32位和64位安装都很友好。它不需要安装单独的Python发行版或包管理器,如Macports或Fink。

首先从this page下载shell脚本来使用它。然后:

sh superpack_10.6_2011.03.07.sh

或者,将superpack_10.6_2011.03.07.sh替换为最新shell脚本的名称,因为它们会不时更新。

要使用它,请确保输入ipython而不是python!

答案 7 :(得分:2)

我遇到了类似的错误 - 你错过了libfreetype的开发文件 - 在我的linux机器上 - 这是libfreetype6-dev

我安装完这个点后就做好了。

答案 8 :(得分:2)

每次构建matplotlib时都会遇到这种情况。我的解决方案:

export CFLAGS=-I/usr/X11/include/freetype2
python setup.py install

答案 9 :(得分:1)

我遵循了page's instructions。我被卡住了

pip install -e git+https://github.com/matplotlib/matplotlib#egg=matplotlib-dev

然后我做了:

git clone https://github.com/matplotlib/matplotlib.git
cd matplotlib
python setup.py build
python setup.py install

输入终端检查我的安装:

python
import matplotlib
print matplotlib.__version__
print matplotlib.__file__

我的版本为0.10.0 dev(截至本文撰写时)和路径/ usr / local / Cellar /...

答案 10 :(得分:1)

我喜欢使用brew,前三种解释中没有一种能起作用或者对我很有吸引力。但是,我确实看了一些,并发现这个Brew友好的解释和解决方案:

http://jholewinski.org/blog/installing-matplotlib-on-os-x-10-7-with-homebrew/

总结:Snow Leopard上的libpng与matplotlib没有友好关系。您可以手动安装未发布的matplotlib来解决它:

brew install python
brew install gfortran
brew install pkg-config
easy_install pip
pip install numpy
git clone https://github.com/matplotlib/matplotlib.git
cd matplotlib
python setup.py build
python setup.py install

答案 11 :(得分:1)

尝试将freetype2符号化为freetype:

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

我能够在不修改PATH等的情况下使用它。看来我的问题是使用非brew python时找不到freetype库(用brew安装)

brew install python
brew install freetype
# maybe more dependencies

然后使用brew python创建virtualenv(没有明确指定brew python的路径,我发现brew virtualenv仍将使用默认的OSX / usr / bin / python):

/usr/local/bin/virtualenv -p /usr/local/bin/python env
source env/bin/activate
pip install matplotlib