使用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,最終如願以償的解決了這個問題。
更換版本之前:
更換numpy版本之后:
參考文檔:
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