h5py在安装后出错

时间:2012-03-26 13:53:00

标签: python compilation hdf5 h5py

  

可能重复:
  Installing h5py on OS X

我想让h5py在我的OS X Lion 10.7.3 Macbook Pro上运行。它以前工作过但不知怎的它已经卸载了,我无法再次安装它。它似乎与安装XCode 4.3有关,但我不确定。

导入h5py时,出现以下错误:

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

我想这与HDF5库有关。它尚未安装,所以我先使用

安装它
brew install hdf5

这没有错误。但最后的警告如下。我认为这很重要:

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)

我不是百分之百确定这意味着什么,但我想这个库是针对i386架构编译的,但是这个目录中有更多文件没有抱怨:

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

后来我也自己编译了源代码,从HDF5组网站(http://www.hdfgroup.org/HDF5/)下载。使用以下配置行,以确保它创建共享库我添加了--enable-shared和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

我已经删除了h5py和hdf5库并重新安装了几次(我自己编译h5py,如使用pip和easy_install),但这似乎没有帮助。

我还使用我刚刚使用此命令创建的构建来安装h5py:

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

我还将我的numpy和scipy安装更新到最新版本。

1 个答案:

答案 0 :(得分:6)

从干净安装的Mac OS X Lion,我必须做的是:

  • 使用命令行工具安装Xcode
  • 安装Homebrew
  • 告诉Homebrew Xcode是哪里(xcode-select ...

然后我可以:

$ brew install hdf5

它没有正确链接,因为我的/usr/local/lib不可写。检查brew doctor以查看是否有任何未关联的软件包:

$ 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

所以我让dir可写并使用了

$ brew link hdf5
$ brew link szip

然后我可以做

$ sudo pip install h5py

并且presto。

>>> import h5py
>>>