我试图在Mac OSX Lion中安装Matplotlib。试图使用SourceFourge站点中的二进制文件,但我遇到了一个错误:“ Matplotlib需要系统2.7才能安装”。

我去了终端,打字了python及其检查要求。

此后,我尝试使用PIP,而这样做的同时会出现以下错误:

“ src/_image.cpp:908:错误:不完整类型的使用无效'struct png_info_def'”

您能给我如何安装它的线索吗?

非常感谢。

编辑:我找到了一种方法,而无需安装新版本的Python:

http://the.taoofmac.com/space/blog/2011/07/24/2222

有帮助吗?

解决方案

您可以尝试使用“官方” Python发行版,Apple可能已经调整了所提供的python。您可以在这里找到2.7: http://www.python.org/download/ 您可能还必须重新安装numpy和后词: http://sourceforge.net/projects/numpy/files/numpy/1.6.1/

我建议安装Scipy,让我知道它是否有效;)

其他提示

这是因为libpng v1.5的API发生了变化(Mac OSX狮子包含在内)。更改已经被推到上游,因此您需要从上游存储库进行编译,直到下一个版本。

您可以按照说明 http://jholewinski.wordpress.com/2011/07/21/installing-matplotlib-on-on-os-os-x-10-7-with-homebrew/

我遵循了这个 页面的说明. 。我被困在

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/...

我建议使用 Macports, ,它应该照顾依赖项,并且将是系统版本的独立性。

编辑: :仅考虑到这个答案的评论,只有几个澄清。

为什么要使用MacPorts(或其他安装程序)?因为他们要照顾依赖项,请提供卸载功能并在版本之间切换(我成功地将后者用于GCC和Python)。并且因为默认安装位置不是系统可执行的位置。覆盖系统Python可以打破依赖它的应用程序(在许多Linux发行版中肯定是正确的,在Mac OS X上可能较少)。

什么时候特别有用?当您要安装在与系统python不同的Python版本的顶部时,并且当您具有非Python扩展名时(C,C ++,Fortran ...)。

什么是倒下的一面?正如@trond在评论中提到的那样,如果您可以默认包装包装,那就很好。您没有从源头构建的那样,没有配置或编译器标志的句柄。

Macports的一个好替代品是 Fink, ,这似乎可以为您提供更多的控制(从源构建)。我不确定它是否已经准备好了Mac OS X Lion。

我知道这将需要更多的时间,但是我将从源中提起安装Python,Numpy和Matplotlib,以确保您在系统中具有一致性。从错误来看,您可能会出现LIBPNG支持的问题。我有一本书如何在Mac OSX上安装Python开发工具“您可能会发现有用。它包含有关如何安装python,numpy,matplotlib和所有必要依赖项的方向。我知道您正在使用Python 2.7,而我列出的方向则适用于Python 2.6.5,但它将是同样的方法。希望您能够工作。

您可以只安装Matplotlib的Python 2.6版本,假设狮子包含Python2.6(Mac OS 10.6“ Snow Leopard”中包含Python2.6 - 尝试键入 Python2.6 找出是否已安装该版本。)。

在Macports上,您可以通过类似的操作来执行此操作:

sudo port install py26-matplotlib

其中py26 -...(或py25 -...,py27 -...等)指示它的目的是哪种python版本。 (如果我猜错了,请检查托盘/端口列表以获取正确的软件包名称)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top