h5py gives error after installation

Gilles picture Gilles · Mar 26, 2012 · Viewed 8.9k times · Source

Possible Duplicate:
Installing h5py on OS X

I am trying to get h5py to work on my OS X Lion 10.7.3 Macbook Pro. It has worked before but somehow it got uninstalled and I can't get it installed again. It seems it has to do with installing XCode 4.3, but I'm not sure.

When importing h5py, I get the following error:

>>> import h5py


   Traceback (most recent call last):

  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/h5py/__init__.py", line 1, in <module>
    from h5py import _errors
ImportError: dlopen(/Library/Python/2.7/site-packages/h5py/_errors.so, 2): Symbol not found: _H5E_ALREADYEXISTS_g
  Referenced from: /Library/Python/2.7/site-packages/h5py/_errors.so
  Expected in: flat namespace
 in /Library/Python/2.7/site-packages/h5py/_errors.so

I guess it has something to do with the HDF5-library. It was not yet installed, so I installed it first using

brew install hdf5

This gave no errors. But the following warning at the end. which I guess is important:

ld: warning: ignoring file ../hdf5-1.8.8/hdf5/lib/libhdf5.a, 
file was built for archive which is not the architecture being linked (i386)

I'm not 100% sure what this means, but I guess this library is compiled for an i386 architecture, there however more files in this directory it does not complain about:

libhdf5.la
libhdf5.dylib -> libhdf5.7.dylib
libhdf5.7.dylib
libhdf5.settings
libhdf5.a
libhdf5_hl.la
libhdf5_hl.dylib -> libhdf5_hl.7.dylib
libhdf5_hl.a
libhdf5_hl.7.dylib

Later I also compiled the source myself, downloaded from the HDF5 group-website (http://www.hdfgroup.org/HDF5/). Using the following configure-line, to make sure it makes shared libraries I added --enable-shared and disabled fortran:

./configure --with-zlib=/usr/local --disable-fortran 
--prefix=/usr/local/ --target=x86_64-apple-darwin 
-build=x86_64-apple-darwin --host=x86_64-apple-darwin 
--enable-shared --disable-production

I have removed both h5py and the hdf5 library and reinstalled them a few times (both compiling h5py myself, as using pip and easy_install), but that did not seem to help.

I also installed h5py using the build I just made using this command:

python setup.py build --hdf5=../hdf5-1.8.8/hdf5

I also updated my numpy and scipy installations to the latest versions.

Answer

noio picture noio · Mar 26, 2012

From a clean install of Mac OS X Lion, what I had to do is the following:

  • Install Xcode with the command-line tools
  • Install Homebrew
  • Tell Homebrew where Xcode is (xcode-select ...)

Then I could:

$ brew install hdf5

It didn't link properly, because my /usr/local/lib wasn't writable. Check brew doctor to see if there are any unlinked packages:

$ brew doctor
Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built.

    hdf5
    szip

So I made the dir writable and used

$ brew link hdf5
$ brew link szip

Then I could do

$ sudo pip install h5py

And presto.

>>> import h5py
>>>