18

我试图在 Mac OSX Lion 中安装 matplotlib。尝试使用 sourcefourge 站点中的二进制文件,但我收到此错误:“matplotlib 需要安装 System Python 2.7”。

我去了终端并输入了 python --version 并检查了要求。

在此之后,我尝试使用 pip,并且在这样做时出现以下错误:

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

你能告诉我如何安装它吗?

非常感谢。

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

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

4

6 回答 6

9

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

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

于 2011-07-24T19:59:36.117 回答
5

我按照此页面的说明进行操作。我被困在

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

于 2011-08-16T20:19:36.013 回答
4

您可以尝试使用“官方”python 发行版,苹果可能已经调整了提供的发行版。您可以在此处找到 2.7:http: //www.python.org/download/ 您可能还必须重新安装 numpy 后记:http: //sourceforge.net/projects/numpy/files/NumPy/1.6.1 /

我建议也安装 scipy 让我知道它是否有效;)

于 2011-07-23T16:11:06.267 回答
3

我建议使用macports,它应该处理依赖关系并且独立于系统 python 版本。

编辑:只是一些澄清,考虑到这个答案的评论。

为什么要使用 macports(或其他安装程序)?因为它们处理依赖关系,所以提供卸载和版本之间切换的功能(我已经成功地将后者用于 gcc 和 python)。并且因为默认安装位置不是系统可执行位置。覆盖系统 python 可能会破坏依赖它的应用程序(这在许多 Linux 发行版中肯定是正确的,在 mac OS X 上可能更少)。

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

不利的一面是什么?正如@Trond 在评论中提到的那样,如果您对包的默认编译没问题,那就太好了。如果您从源代码构建,您将无法处理配置或编译器标志。

macports 的一个很好的替代品是fink,它似乎给了你更多的控制权(从源代码构建)。我不确定它是否已完全准备好用于 mac OS X Lion。

于 2011-07-23T12:59:24.380 回答
1

我知道这需要更多时间,但我建议从源代码安装 python、numpy 和 matplotlib,以确保您的系统具有一致性。从错误来看,您的 libPNG 支持可能存在问题。我写了一篇“如何在 Mac OSX 上安装 python 开发工具”,您可能会发现它很有用。它包含有关如何安装 python、numpy、matplotlib 和所有必要依赖项的说明。我了解您正在使用 Python 2.7,并且我列出的方向适用于 Python 2.6.5,但方法相同。希望你让它工作。

于 2011-07-23T17:15:55.387 回答
0

您可以只安装 Python 2.6 版本的 Matplotlib,假设 Python2.6 包含在 Lion 中(py2.5 和 2.6 包含在 Mac OS 10.6“Snow Leopard”中 - 尝试输入python2.6以查看是否安装了该版本.)。

在 MacPorts 上,您可以通过以下方式执行此操作:

sudo port install py26-matplotlib

其中 py26-...(或 py25-...、py27-... 等)表示它适用于哪个 python 版本。(检查 Pallet/ports 列表以获得正确的包名,以防我猜错了)

于 2011-12-08T05:03:44.960 回答