Не удается установить H5PY — HDF5.dll зависимость не найдена

#python

#python

Вопрос:

Я пытаюсь установить библиотеку, которая полагается на h5py. Однако, когда я пытаюсь установить его, я получаю эту ошибку:

Сбор h5py с использованием кэшированного h5py-3.1.0.tar.gz (371 кБ) Установка зависимостей сборки … выполнено получение требований к колесу сборки… выполнена установка внутренних зависимостей … выполнена подготовка метаданных колеса … выполнен сбор markdown> = 2.6.8 с использованием кэшированного Markdown-3.3.3-py3-none-any.whl (96 КБ) Сбор werkzeug> = 0.11.10 С использованием кэшированного Werkzeug-1.0.1-py2.py3-none-any.whl (298 кБ) Требование уже выполнено, пропуск обновления: setuptools в c:usersuserdesktopprojectspythonmlagentsvenvlibsite-packages (из protobuf>=3.6.1- tensorflow==1.12.0) (50.3.2) Использование устаревшего ‘setup.py install’ для termcolor, так как пакет ‘wheel’ не установлен. Построение колес для собранных пакетов: колесо построения h5py для h5py (PEP 517)… ошибка ОШИБКА: команда выполнена с ошибкой со статусом выхода 1: command: ‘c:usersuserdesktopprojectspythonmlagentsvenvscriptspython.exe ‘ ‘c:usersuserdesktopprojectspythonmlagentsvenvlibsite-packages pip_vendorpep517_in_process.py’ build_wheel’C:UsersUSERAppDataLocalTemptmpf62jt8ch ‘ cwd: C:UsersUSERAppDataLocalTemppip-install-7diegpjlh5py Полный вывод (70 строк): запуск bdist_wheel запуск сборки запуск build_py создание сборки создание buildlib.win32-3.8 создание build lib.win32-3.8 копирование h5py h5pyh5py_warnings.py -> buildlib.win32-3.8копирование h5py h5pyipy_completer.py -> buildlib.win32-3.8 копирование h5py h5pyversion.py -> buildlib.win32-3.8h5py копирование h5py_init _.py -> buildlib.win32-3.8h5py создание build lib.win32-3.8 h5py_hl копирование h5py_hlattrs.py -> buildlib.win32-3.8копирование h5py_hl h5py_hlbase.py -> buildlib.win32-3.8копирование h5py_hl h5py_hlcompat.py -> buildlib.win32-3.8копирование h5py_hl h5py_hldataset.py -> buildlib.win32-3.8копирование h5py_hl h5py_hldatatype.py -> buildlib.win32-3.8копирование h5py_hl h5py_hldims.py -> buildlib.win32-3.8копирование h5py_hl h5py_hlfiles.py -> buildlib.win32-3.8копирование h5py_hl h5py_hlfilters.py -> buildбиблиотека.win32-3.8h5py_hl копирование h5py_hlgroup.py -> buildlib.win32-3.8копирование h5py_hl h5py_hlselections.py -> buildlib.win32-3.8копирование h5py_hl h5py_hlselections2.py -> buildlib.win32-3.8копирование h5py_hl h5py_hlvds.py -> buildlib.win32-3.8h5py_hl копирование h5py_hl_init_.py -> buildlib.win32-3.8h5py_hl создание buildlib.win32-3.8h5pytests копирование h5pytestscommon.py -> buildlib.win32-3.8h5pyкопирование тестов h5pytestsconftest.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_attribute_create.py -> сборкаlib.win32-3.8 h5py копирование тестов h5pyteststest_attrs.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_attrs_data.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_base.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_big_endian_file.py -> сборкаlib.win32-3.8 h5py копирование тестов h5pyteststest_completions.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_dataset.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_dataset_getitem.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_dataset_swmr.py -> сборкаlib.win32-3.8 h5py копирование тестов h5pyteststest_datatype.py -> buildlib.win32-3.8 h5py копирование тестов h5pyteststest_dimension_scales.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_dims_dimensionproxy.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_dtype.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_errors.py -> buildlib.win32-3.8 h5py копирование тестов h5pyteststest_file.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_file2.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_file_image.py -> buildlib.win32-3.копирование 8 h5pytests h5pyteststest_filters.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_group.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_h5.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_h5d_direct_chunk.py -> buildlib.win32-3.8 h5py копирование тестов h5pyteststest_h5f.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_h5p.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_h5pl.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_h5t.py -> buildlib.win32-3.8 h5py копирование тестов h5pyteststest_objects.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_selections.py -> buildlib.win32-3.8h5pyкопирование тестов h5pyteststest_slicing.py -> buildlib.win32-3.8h5pyкопирование тестов h5pytests_init_.py -> buildlib.win32-3.8h5pytests создание buildlib.win32-3.8h5pytestsdata_files копирование h5pytestsdata_files_init _.py -> buildlib.win32-3.8h5pytestsdata_files создание buildlib.win32-3.8h5pyteststest_vds копирование h5pyteststest_vdstest_highlevel_vds.py -> buildlib.win32-3.8h5pyteststest_vds копирование h5pyteststest_vdstest_lowlevel_vds.py -> buildlib.win32-3.8h5pytests test_vds копирование h5pyteststest_vdstest_virtual_source.py -> buildlib.win32-3.8h5pyteststest_vds копирование h5pyteststest_vds_init_.py -> buildlib.win32-3.8h5pyteststest_vds копирование h5pytestsdata_filesvlen_string_dset.h5 -> buildlib.win32-3.8h5pytestsdata_files копирование h5pytestsdata_filesvlen_string_dset_utc.h5 -> buildlib.win32-3.8h5pytestsdata_files копирование h5pytestsdata_filesvlen_string_s390x.h5 -> buildlib.win32-3.8 h5pytestsdata_files запуск build_ext Загрузка библиотеки чтобыполучить версию: hdf5.dll ошибка: Не удалось загрузить зависимость HDF5, убедитесь, что HDF5 установлен правильно ошибка: не удалось найти модуль ‘hdf5.dll «. Попробуйте использовать полный путь с синтаксисом конструктора.


ОШИБКА: не удалось построить колесо сборки для h5py ОШИБКА h5py: не удалось создать колеса для h5py, которые используют PEP 517 и не могут быть установлены напрямую

Из этого я понимаю, что мне не хватает HDF5, однако я не смог найти правильный способ его установки. И даже если я это сделаю, я понятия не имею, где h5py хочет, чтобы его dll была прочитана.

Редактировать Я использую Python 3.8.0, и если кому-то интересно, какую библиотеку я пытался установить, это tensorflow.

 pip install tensorflow
  

у меня не работает, поэтому я использовал файл direct wheel для версии 1.14.0

Ценю вашу помощь 🙂

Ответ №1:

Я использую Python 3.9 на Apple Silicon и столкнулся с той же ошибкой. Я исправил это с помощью следующих процедур:

  1. brew install hdf5
  2. git clone https://github.com/h5py/h5py
  3. Откройте setup_configure.py и измените эту строку:
 - default_path = 'libhdf5.dylib'
  default_path = '/opt/homebrew/lib/libhdf5.dylib'
  
  1. H5PY_SETUP_REQUIRES=0 python3 setup.py build
  2. python3 -m pip install . --no-build-isolation

Комментарии:

1. Это сработало как шарм. Я посмотрел H5PY_SETUP_REQUIRES=0, но не смог найти хорошего описания его функции. Не могли бы вы кратко описать?

2. @akh22 Это для пропуска setup_require (см. Эту строку: github.com/h5py/h5py/blob/master/setup.py#L63 ). По умолчанию setup.py устанавливаются внешние модули, такие как numpy, у которого также есть некоторые проблемы с установкой с M1. Чтобы избежать их установки, установите H5PY_SETUP_REQUIRES=0 и выполните pip install с --no-build-isolation помощью .

3. На самом деле это настраивается через HDF5_DIR env var ( github.com/h5py/h5py/blob/master/setup_configure.py#L89 ), поэтому нет необходимости клонировать репозиторий и редактировать значение по умолчанию. Установка переменной env HDF5_DIR="$(brew --prefix hdf5)" делает свое дело.

4. мне не требуется специального редактирования, мне просто нужно было указать пути включения и библиотеки в командной строке, например: python3 setup.py build build_ext --include-dirs=/opt/homebrew/include --library-dirs=/opt/homebrew/lib

Ответ №2:

Это связано с тем, что в главном обновлении (python 3.9) так много ошибок. Я попытался установить модуль opencv на python, и он выдает ту же ошибку, у вас есть два варианта;

  1. вы можете загрузить более старую версию python, например python 3.8 / 7, которая может поддерживать H5PY.

  2. Наберитесь терпения и подождите, пока python исправит все ошибки, все будет хорошо в середине декабря или раньше.

надеюсь, это помогло тебе! 🙂

Комментарии:

1. Подождите, python 3.9 sitll влияет на меня, даже если я использую 3.8? Если это так, то, черт возьми, это отстой (то, как вы говорите это в решении 1, подразумевает, что это не так ..) Я уже использую python 3.8.0, как я упоминал в вопросе, я удалил python 3.9 раньше, после того, как понял, что он полон ошибок, но с 3.8 он тоже не работает

2. @1Mangomaster1 просто предложение, не используйте фразы типа «черт, это отстой». Это не совсем неправильно или что-то в этом роде… некоторые системы просто распознают его для проверки на несоответствующее поведение. Ваш комментарий не был неуместным, но лучше не привлекать нежелательного внимания 🙂

3. Вы правы.. Прошу прощения. Я просто расстраиваюсь, потому что это заставляет меня застрять, пока эта проблема не будет решена. Хотя Python 3.8.0 должен был быть достаточно старым, чтобы эта проблема была решена… Я просто не могу понять, почему ошибка все еще сохраняется

Ответ №3:

Перейдите на более старые версии python, пока не сможете установить keras (я думаю, именно здесь вы столкнулись с проблемой). Перешел с python 3.8 на 3.7 и, наконец, на 3.6.8, где я не сталкивался с какими-либо ошибками, подобными предыдущим версиям. Не о чем беспокоиться, поскольку эта версия python поддерживает почти все библиотеки в качестве последних версий.

Ответ №4:

Это странно, потому что я видел, как люди устанавливали tensorflow на версии новее, чем Python 3.8 .. но я где-то нашел, что H5PY несовместим с python 3.8 и что мне нужно понизить…

Тем не менее, я думаю, это потому, что более старые версии tensorflow работают для меня, но то, что я делаю, требует как минимум 1.14.0…

Я постараюсь понизить python еще больше (до python 3.7.) и проинформировать вас об этом

Редактировать

Это работает. Я использую Python 3.7.2, и все работает отлично! Мне даже не нужно было получать файл wheel для tensorflow, я мог просто выполнить обычную установку tensorflow.

Спасибо всем, кто прокомментировал 🙂