Thursdays Coming
Thursdays Coming

Reputation: 1022

Problem importing matplotlib.mlab and .pyplot in python 2.7 on Mac OSX 10.6

I am trying to plot a histogram using matplotlib in Python 2.7 on OSX 10.6

I have verified that I can import numpy, scipy, and matplotlib into python. A sample script on the matplotlib website does

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

However, I get an error when doing this. Here is what happens when I try to import 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
>>> 

What am I doing wrong that I can't import these as the script does?

Upvotes: 4

Views: 8511

Answers (1)

Ferdinand Beyer
Ferdinand Beyer

Reputation: 67157

For the ImportError: It seems that there is an architecture mismatch. Maybe you have installed a 32-bit version of matplotlib, but are using a 64-bit Python? What does the following shell command print?

file /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/nxutils.so

For the AttributeError: You have to explicitely import matplotlib.pyplot, it won't get imported automatically when just importing matplotlib. The most common aliasing scheme is:

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

Then you can draw your histogram using the plt name:

plt.hist(...)

Upvotes: 3

Related Questions