#python-2.7 #pip #centos7 #hdf5 #netcdf4
#python-2.7 #pip #centos7 #hdf5 #netcdf4
Вопрос:
Я пытаюсь установить netCDF4 через pip в системе CentOS 7 под управлением Python 2.7. Следующие пакеты HDF5 уже установлены через yum:
[user@host]$ rpm -qa | grep hdf5
hdf5-openmpi-1.8.12-12.el7.x86_64
hdf5-1.8.12-11.el7.x86_64
Несмотря на установленные пакеты, я все еще сталкиваюсь с этой ошибкой при попытке установить hdf5:
[user@host]$ pip install -r requirements.txt
.
.
.
Collecting netCDF4>=1.1.1 (from -r requirements.txt (line 9))
Using cached https://files.pythonhosted.org/packages/79/0d/caa957cc1b42b718ce4b9b3e849e6f7aa99faad2d522d8f2d7a33500fba0/netCDF4-1.5.6.tar.gz
ERROR: Command errored out with exit status 1:
command: /home/ooiui/miniconda2/envs/ooiui279/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-cOs19I/netCDF4/setup.py'"'"'; __file__='"'"'/tmp/pip-install-cOs19I/netCDF4/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
cwd: /tmp/pip-install-cOs19I/netCDF4/
Complete output (30 lines):
Package hdf5 was not found in the pkg-config search path.
Perhaps you should add the directory containing `hdf5.pc'
to the PKG_CONFIG_PATH environment variable
No package 'hdf5' found
reading from setup.cfg...
HDF5_DIR environment variable not set, checking some standard locations ..
checking /home/ooiui/miniconda2/envs/ooiui279/include ...
hdf5 headers not found in /home/ooiui/miniconda2/envs/ooiui279/include
checking /home/ooiui/miniconda2/envs/ooiui279/Library/include ...
hdf5 headers not found in /home/ooiui/miniconda2/envs/ooiui279/Library/include
checking /home/ooiui/include ...
hdf5 headers not found in /home/ooiui/include
checking /usr/local/include ...
hdf5 headers not found in /usr/local/include
checking /sw/include ...
hdf5 headers not found in /sw/include
checking /opt/include ...
hdf5 headers not found in /opt/include
checking /opt/local/include ...
hdf5 headers not found in /opt/local/include
checking /usr/include ...
hdf5 headers not found in /usr/include
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-cOs19I/netCDF4/setup.py", line 425, in <module>
_populate_hdf5_info(dirstosearch, inc_dirs, libs, lib_dirs)
File "/tmp/pip-install-cOs19I/netCDF4/setup.py", line 366, in _populate_hdf5_info
raise ValueError('did not find HDF5 headers')
ValueError: did not find HDF5 headers
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
В прошлом, когда я устанавливал netCDF4 на CentOS 6, мне не нужно было вносить какие-либо специальные изменения. Что-то изменилось, что требует дополнительной подготовки? Заранее спасибо.
Благодаря phd у меня были установлены заголовки HDF5 и установлена переменная окружения HDF5_DIR в /include, чтобы отразить место установки. Теперь я, похоже, сталкиваюсь с аналогичным препятствием с самим netCDF4:
Collecting netCDF4>=1.1.1 (from -r requirements.txt (line 9))
Using cached https://files.pythonhosted.org/packages/79/0d/caa957cc1b42b718ce4b9b3e849e6f7aa99faad2d522d8f2d7a33500fba0/netCDF4-1.5.6.tar.gz
ERROR: Command errored out with exit status 1:
command: /home/ooiui/miniconda2/envs/ooiui279/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-l853Xs/netCDF4/setup.py'"'"'; __file__='"'"'/tmp/pip-install-l853Xs/netCDF4/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
cwd: /tmp/pip-install-l853Xs/netCDF4/
Complete output (23 lines):
Package hdf5 was not found in the pkg-config search path.
Perhaps you should add the directory containing `hdf5.pc'
to the PKG_CONFIG_PATH environment variable
No package 'hdf5' found
reading from setup.cfg...
checking /usr/include ...
HDF5 library version: 1.8.12 headers found in /usr/include
HDF5 library version: 1.8.12 found in /usr
NETCDF4_DIR environment variable not set, checking standard locations..
checking /home/ooiui/miniconda2/envs/ooiui279 ...
checking /home/ooiui/miniconda2/envs/ooiui279/Library ...
checking /home/ooiui ...
checking /usr/local ...
checking /sw ...
checking /opt ...
checking /opt/local ...
checking /usr ...
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-l853Xs/netCDF4/setup.py", line 441, in <module>
raise ValueError('did not find netCDF version 4 headers')
ValueError: did not find netCDF version 4 headers
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Мы пытаемся установить netCDF4 через pip для requirements.txt файл, но, похоже, он терпит неудачу из-за отсутствия заголовков netCDF4.
Ответ №1:
Ошибка ValueError: не найдены заголовки HDF5
Ошибка означает, что нет файлов разработки. У вас есть библиотека, но нет заголовков. Установить:
yum install hdf5-devel
Комментарии:
1. Спасибо, доктор философии. Я установил заголовки HDF5, но теперь достиг точки, когда установка не выполняется в заголовках netCDF4. Сообщение об ошибке приведено выше.
2. Возможно
yum install netcdf-devel
; см. centos.pkgs.org/7/epel-x86_64 /…3. установка netcdf-devel действительно помогла нам преодолеть это препятствие при установке pip. Спасибо! Мы не установили пакеты hdf5-devel или netcdf-devel заранее, потому что мы не сделали этого с нашими предыдущими экземплярами CentOS 6.