项目场景:
在读取高光谱图像的时候,遇到了后缀名为.exr的文件格式。经查,.exr文件是一种开放的高动态范围(HDR)光栅图像格式。Python中的常见的图像处理库,如pillow无法正常地读取此种格式的图像文件。幸运的是,在Python的扩展库中存在着一个名为“OpenEXR”的库能够帮助我们成功地读取.exr文件。但是直接使用conda
或者是pip
安装OpenEXR
可能会遇到bug。首先,虽然直接使用conda
可能成功地安装此库且在过程中不会遇到什么的error
,但是当在python
环境中import OpenEXR
时却会显示ModuleNotFondError: No module named 'OpenEXR'
。我猜想这很有可能是因为库名已经被更改,并不是名为OpenEXR
而是其它名字所以导致无法正常导入。使用pip install OpenEXR
则可能会直接在安装的过程中报错,导致无法正常地安装此库。我在网上搜索了很久,有的博客提供了另外一种使用pip
成功安装OpenEXR
的方法:
- 下载相应版本的
OpenEXR
库(参考文章); - 使用
pip
安装本地.whl库,pip install xxx.whl
但是在https://www.lfd.uci.edu/~gohlke/pythonlibs/中仅提供了windows系统的库文件,并没有提供在ubuntu系统(一般我们的深度学习程序都是在ubuntu服务器上运行)对应的库文件。另外,网上的许多博客也没有给出比较明确的解决办法。
问题描述
使用pip install OpenEXR
,程序报错:
原因分析:
根据报错信息可知,由于缺少了ImfIO.h
头文件,所以pip
才无法正常地安装OpenEXR
。在网上,发现了源码的github地址源码:https://github.com/jamesbowman/openexrpython。
根据README.md
中可知,安装OpenEXR
不仅需要g++
编译器,还需要libopenexr-dev
和zlib1g-dev
等依赖。
解决方案:
安装相应的依赖库:
sudo apt install libopenexr-dev
sudo apt install zlib1g-dev
再次运行pip install OpenEXR
成功地安装了OpenEXR
库,且能正常导入