使用Pytorch的时候,原本程序可以正常运行,但是突然有一天再次跑程序的时候遇到了如下这个错误:

  OMP: Error #15: Initializing libomp.dylib, but found libiomp5.dylib already initialize


这就有点慌了,然后面向百度编程,搜索相关的解决方案,最开始大多数的文档都是根据报错信息中的提示,说在当前源代码中添加一段代码,如下所示:

import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

我如是照做,发现并无卵用,所以这种方式可能并不解决问题的根本,可能对某些情况是暂时可用的,但我的情况就不能用了,此时还有人说要安装一个“nomkl”库,但是我是在Windows下,这个库只有linux版本和Mac版本的,所以使用conda安装也不能解决这个问题,最终在一个文档中发现了问题的解决办法,原来是因为numpy版本问题造成的与系统之间的冲突最终导致了如上的异常。看看文档中比较直中核心的一段话:

 

If you are using Python distributed by Conda, then it is highly likely that the error is caused by the numpy package from Conda which includes the mkl package which in turn conflicts with the system-wide library. In this case you can update the numpy package in Conda or replace the Conda’s OpenMP library instance with system-wide one by creating a symlink to it in Conda environment folder $CONDA_PREFIX/lib.

如果Python是基本于Conda安装的,则Conda上的numpy包中的mkl很容易与系统内库发生冲突,可选择update numpy package in Conda或者设置为系统库。

 

所以我的解决方案就是处理numpy版本,因为我的Python环境也是基于conda创建的虚拟环境,所以就将自己的虚拟环境中的较高版本的numpy(我的是1.19.0)降低到了1.16.5,最终如愿以偿的解决了这个问题。

更换版本之前:

关于使用Pytorch遇到的OMP: Error #15: Initializing libomp.dylib, but found libiomp5.dylib already initialize异常的解决方案

 

 更换numpy版本之后:

关于使用Pytorch遇到的OMP: Error #15: Initializing libomp.dylib, but found libiomp5.dylib already initialize异常的解决方案

 

 参考文档:

https://blog.csdn.net/sinat_41939868/article/details/88820402?ops_request_misc=&request_id=&biz_id=102&utm_term=OMP:%20Error%20#15:%20Initializing%20l&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-88820402

https://blog.csdn.net/qq_20793791/article/details/107238744?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param