Ubuntu16 conda环境中 安装OpenEXR遇到的问题

按照本文方法可以解决如下错误:

OpenEXR.cpp:37:19: fatal error: ImfIO.h: 没有那个文件或目录

cannot find -lIlmImf

undefined symbol: _ZTIN7Iex_2_27BaseExcE

以及各种缺失.so文件的错误。

 

为了跑PVNET,需要配OpenEXR,没想到这个破环境很麻烦,花了大半天的时间才配好,踩了无数个坑,而且网上几乎没有相似的问题,为了方便后人总结一下。

如果你是在Python2.7环境中运行OpenEXR的话,可能网上搜到的apt-get libopenexr-dev之类的的方法就可以了,我这篇主要针对Python3

我的环境:Ubuntu16.04+anaconda

开始之前先sudo apt-get remove libopenexr-dev卸载掉这个没卵用的包。

前两步是安装OpenEXR的包,然后安装openexrpython,注意这两者是不同的!前者需要自己编译或者conda安装,而后者需要通过pip安装!!详情看https://blog.csdn.net/qq_24306353/article/details/89111971

我个人推荐:

第一步

conda install -c conda-forge openexr

第二步(不一定成功,先做,再看下一步):在你的conda环境中

pip install openexr

如果成功安装,并且可以import OpenEXR就万事大吉。

如果你在第二步不能安装,报错“OpenEXR.cpp:37:19: fatal error: ImfIO.h: 没有那个文件或目录”

或者虽然可以安装,但是安装完成后import OpenEXR的时候发现报错,缺少.so文件等错误,

那么按下面的步骤:

先卸载掉openexr

pip uninstall openexr

然后随便新建某个目录temp,在该目录里面:

git clone https://github.com/jamesbowman/openexrpython

然后打开该项目,打开setup.py,找到include_dirs和library_dirs,找到后在这两个list中添加如下目录:

在include_dirs中添加 '/你conda的目录/envs/你的环境名/include/OpenEXR'

在library_dirs中添加'/你的conda目录/envs/你的环境名/lib'

添加之后保存,然后回到刚才的temp文件夹中,(注意先激活你的conda环境)

pip install ./openexrpython

然后试试import OpenEXR,应该没问题啦。

希望能帮助到和我一样遇到困惑的人。

你可能感兴趣的:(Ubuntu,OpenEXR)