在Mac OSX 10.6上使用Python 2.7时,导入matplotlib.mlab和.pypot出现问题

4

我正在尝试在OSX 10.6上使用Python 2.7中的matplotlib绘制直方图。

我已确认我可以将numpy,scipy和matplotlib导入Python。 matplotlib网站上的示例脚本确实可以这样做。

#!/usr/bin/env python
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

然而,当我尝试导入mlab时出现错误。以下是我尝试导入mlab时发生的情况。
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib.mlab as mlab
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/mlab.py", line 151, in <module>
    import matplotlib.nxutils as nxutils
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/nxutils.so, 2): no suitable image found.  Did find:
    /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/nxutils.so: no matching architecture in universal wrapper
>>> 

我做错了什么,不能像脚本一样导入这些文件吗?

一个相关问题:如果我尝试调用matplotlib.pyplot.hist(),它不起作用并给出AttributeError,说matplotlib没有'pyplot'属性,但这在matplotlib文档中有列出。 - Thursdays Coming
2个回答

3
< p >对于 ImportError :似乎存在架构不匹配的问题。也许您安装了32位版本的matplotlib,但正在使用64位Python?以下shell命令打印什么?< /p>
file /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/nxutils.so

针对AttributeError错误: 当你只导入matplotlib时,matplotlib.pyplot不会自动导入,需要显式地进行导入。最常用的别名方案是:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

然后您可以使用plt名称绘制直方图:

plt.hist(...)

我认为你是正确的。我稍微查了一下,显然我正在运行64位的Python。根据你的问题输出: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/nxutils.so: Mach-O universal binary with 2 architectures /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/nxutils.so (for architecture ppc): Mach-O bundle ppc /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/nxutils.so (for architecture i386): Mach-O bundle i386 - Thursdays Coming
1
最好的选择是以32位运行Python吗?我该如何做到这一点? 我还尝试寻找64位的matplotlib,但似乎在Snow Leopard上做这件事有些复杂。 - Thursdays Coming

2
我认为最好的选择是使用你已经拥有的Python。这里有说明

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接