Импорт пигриб анаконда выбрасывает проблемы с зависимостями
У меня следующая проблема: я установил anaconda 3 и установил пакет под названием "pygrib" в свою среду anaconda. Теперь при импорте Pygrib в файл в моей среде, это покажет мне эту ошибку:
import pygrib
ImportError: libhdf5.so.10: cannot open shared object file: No such file or directory
Поскольку я новичок, я действительно не знаю, что делать с этой информацией. Я установил пакет h5py и некоторые другие связанные с ним, но это не решило проблему. Что делать?
1 ответ
Это ошибка связи с библиотекой HDF5. Ты строишь pygrib
из источника или с помощью conda-forge
канал для установки через conda
? Когда я использую conda-forge
построить из pygrib
Я получаю ту же проблему. GRIB API от ECMWF (на conda-forge
он указан как ecmwf_grib
) - это то, от чего зависит pygrib, а зависимость HDF5 исходит от netCDF4, используемого в библиотеке API GRIB. В частности, использование последней версии HDF5 (на данный момент версии 1.10.0) является причиной проблем. Использование HDF5 1.8.* Вместо этого позволяет pygrib
импортировать правильно.
Чтобы заставить conda получить конкретную версию, просто выполните:
conda install pygrib hdf5=1.8
Это получит conda
снова решить спецификации пакета с помощью старой библиотеки HDF5 и, вероятно, решить проблему. Это предполагает, что вы находитесь в conda
среда, которую вы установили pygrib
в. Вы также можете создать новую среду с conda create -n <env name> pygrib hdf5=1.8
если бы ты хотел.
В общем, когда вы видите эти ошибки, когда библиотека не найдена, часто возникает вопрос о том, чтобы установить правильную версию библиотеки. С conda
такого рода вещи случаются при обновлении пакетов, и устанавливается новая версия библиотеки, с которой пакет, с которым вы работаете, не был правильно связан. Пока вы можете отследить пакет / библиотеку, которая вызывает проблемы, вы можете использовать описанную выше процедуру, чтобы начать требовать установки определенных версий вещей и conda
Затем следует обновить или понизить версию, чтобы все снова работало вместе. Надеюсь, это имеет смысл и помогает.
Эта часть может вас заинтересовать, а может и не заинтересовать, но я не могу сказать наверняка, откуда возникла эта проблема. Я думаю, что это что-то с ecmwf_grib
и как это построено. Вот где ldd
показывает старую зависимость HDF5, отображаемую для моей установки. Если я смогу выяснить точную проблему, я обновлю этот ответ.