Недавно я обновил таблицы на моей установке на python, и некоторые странные вещи, похоже, происходят с библиотеками HDF5.Не удается открыть файлы matlab с использованием новейших HDF5
У меня есть куча данных, которые были первоначально сохранены как .mat-файл, который использует формат HDF5. Я читал это в python, используя pyTables, и до сих пор это работало нормально.
Я обновляю pyTables до версии 3.0, и похоже, что это также улучшило мою установку HDF5 (или что-то в этом роде). Теперь, в любое время я пытаюсь прочитать файл .mat в память, я получаю следующее сообщение об ошибке:
Warning! ***HDF5 library version mismatched error***
The HDF5 header files used to compile this application do not match
the version used by the HDF5 library to which this application is linked.
Data corruption or segmentation faults may occur if the application continues.
This can happen when an application was compiled by one version of HDF5 but
linked with a different version of static or shared HDF5 library.
You should recompile the application or check your shared library related
settings such as 'LD_LIBRARY_PATH'.
You can, at your own risk, disable this warning by setting the environment
variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'.
Setting it to 2 or higher will suppress the warning messages totally.
Headers are 1.8.5, library is 1.8.9
SUMMARY OF THE HDF5 CONFIGURATION
=================================
General Information:
-------------------
HDF5 Version: 1.8.9
Configured on: Tue Sep 11 15:02:44 CDT 2012
Configured by: [email protected]
Configure mode: production
Host system: x86_64-unknown-linux-gnu
Uname information: Linux centos5x86 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
Byte sex: little-endian
Libraries:
Installation point: /opt/anaconda1anaconda2anaconda3
Compiling Options:
------------------
Compilation Mode: production
C Compiler: /usr/bin/gcc (gcc (GCC) 4.1.2 20080704)
CFLAGS:
H5_CFLAGS: -std=c99 -pedantic -Wall -Wextra -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wfloat-equal -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wdisabled-optimization -Wformat=2 -Wunreachable-code -Wendif-labels -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch -Wvariadic-macros -Wnonnull -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros -Wunsafe-loop-optimizations -Wc++-compat -Wvolatile-register-var -O3 -fomit-frame-pointer -finline-functions
AM_CFLAGS:
CPPFLAGS:
H5_CPPFLAGS: -D_POSIX_C_SOURCE=199506L -DNDEBUG -UH5_DEBUG_API
AM_CPPFLAGS: -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_BSD_SOURCE
Shared C Library: yes
Static C Library: no
Statically Linked Executables: no
LDFLAGS:
H5_LDFLAGS:
AM_LDFLAGS:
Extra libraries: -lz -lrt -lm
Archiver: ar
Ranlib: ranlib
Debugged Packages:
API Tracing: no
Languages:
----------
Fortran: no
C++: no
Features:
---------
Parallel HDF5: no
High Level library: yes
Threadsafety: no
Default API Mapping: v18
With Deprecated Public Symbols: yes
I/O filters (external): deflate(zlib)
I/O filters (internal): shuffle,fletcher32,nbit,scaleoffset
MPE: no
Direct VFD: no
dmalloc: no
Clear file buffers before write: yes
Using memory checker: no
Function Stack Tracing: no
GPFS: no
Strict File Format Checks: no
Optimization Instrumentation: no
Large File Support (LFS): yes
Bye...
Aborted
Затем он ломает питон и сбрасывает меня обратно в оболочку.
Я попытался понизить мои pyTables до версии 3.0, но это не поможет. Я также попробовал повторное открытие в Matlab и снова сэкономить, но это все еще не работает.
Любые идеи, что происходит не так? Похоже, что Matlab сохраняет в другую версию HDF5, чем предполагает один pyTables. Кажется, я должен либо обновить библиотеку HDF5 Matlab, либо понизить уровень python, но я не могу понять, как это сделать ...
Спасибо за объяснение решения, которое вы нашли - сегодня я столкнулся с той же проблемой. Поэтому просто упомянем явные строки, которые я ввел после прочтения вашего замечательного объяснения: 'pip uninstall tables' ' conda install pytables' –