Python OMP:错误#15:初始化libiomp5.dylib,但发现libiomp5.dylib已初始化
我正在尝试运行一个测试程序,以检查我的Anaconda环境是否配置正确。但是,当我运行测试程序时,当程序设置图形时,我会收到此错误消息(Python OMP:错误#15:初始化libiomp5.dylib,但发现libiomp5.dylib已初始化,python,macos,anaconda,openmp,conda,Python,Macos,Anaconda,Openmp,Conda,我正在尝试运行一个测试程序,以检查我的Anaconda环境是否配置正确。但是,当我运行测试程序时,当程序设置图形时,我会收到此错误消息(on\u train\u end()确切地说是回调): OMP:错误#15:初始化libiomp5.dylib,但找到libiomp5.dylib 已初始化。 OMP:提示这意味着OpenMP运行时的多个副本已被删除,因为它可能会降低性能或导致不正确的结果。最好的做法是确保只有一个OpenMP运行时链接到进程中,例如,避免在任何库中静态链接OpenMP运行时。作
on\u train\u end()
确切地说是回调):
OMP:错误#15:初始化libiomp5.dylib,但找到libiomp5.dylib
已初始化。
OMP:提示这意味着OpenMP运行时的多个副本已被删除,因为它可能会降低性能或导致不正确的结果。最好的做法是确保只有一个OpenMP运行时链接到进程中,例如,避免在任何库中静态链接OpenMP运行时。作为一种不安全、不受支持、未记录的解决方法,您可以将环境变量KMP_DUPLICATE_LIB_OK=TRUE设置为允许程序继续执行,但这可能会导致崩溃或产生错误的结果。有关更多信息,请参阅
我正在MacBook Pro 15“2015上运行测试程序,其中安装了macOS Mojave 10.14.1。我目前安装的Anaconda发行版是
以下是测试程序:
#!/usr/bin/env python
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow import keras
Xs = np.array([
[0, 0],
[0, 1],
[1, 1],
[1, 0]
])
Ys = np.array([
[0],
[1],
[0],
[1]
])
class MyCallback(keras.callbacks.Callback):
def __init__(self):
super(MyCallback, self).__init__()
self.stats = []
def on_epoch_end(self, epoch, logs=None):
self.stats.append({
'loss': logs['loss'],
'acc': logs['acc'],
'epoch': epoch
})
def on_train_end(self, logs=None):
loss_x = []
loss_y = []
acc_x = []
acc_y = []
for e in self.stats:
loss_x.append(e['epoch'])
loss_y.append(e['loss'])
acc_x.append(e['epoch'])
acc_y.append(e['acc'])
plt.plot(loss_x, loss_y, 'r', label='Loss')
plt.plot(acc_x, acc_y, 'b', label='Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Loss / Accuracy')
plt.legend(loc='upper left')
plt.show()
with tf.Session() as session:
model = keras.models.Sequential()
model.add(keras.layers.Dense(10, activation=keras.activations.elu, input_dim=2))
model.add(keras.layers.Dense(1, activation=keras.activations.sigmoid))
model.compile(optimizer=keras.optimizers.Adam(lr=0.05),
loss=keras.losses.mean_squared_error,
metrics=['accuracy'])
model.fit(x=Xs, y=Ys, batch_size=4, epochs=50, callbacks=[MyCallback()])
print("Training complete")
loss, acc = model.evaluate(Xs, Ys)
print(f"loss: {loss} - acc: {acc}")
predictions = model.predict(Xs)
print("predictions")
print(predictions)
我已经尝试解决引用相关问题的问题。因此,在import
部分后添加以下代码行:
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'
我得到的是另一条错误消息,这是完整的堆栈跟踪:
2018-12-06 10:18:34.262 python[19319:371282] -[NSApplication _setup:]: unrecognized selector sent to instance 0x7ff2b07a3d00
2018-12-06 10:18:34.266 python[19319:371282] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSApplication _setup:]: unrecognized selector sent to instance 0x7ff2b07a3d00'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff2ccf0e65 __exceptionPreprocess + 256
1 libobjc.A.dylib 0x00007fff58d47720 objc_exception_throw + 48
2 CoreFoundation 0x00007fff2cd6e22d -[NSObject(NSObject) __retain_OA] + 0
3 CoreFoundation 0x00007fff2cc92820 ___forwarding___ + 1486
4 CoreFoundation 0x00007fff2cc921c8 _CF_forwarding_prep_0 + 120
5 libtk8.6.dylib 0x0000000b36aeb31d TkpInit + 413
6 libtk8.6.dylib 0x0000000b36a4317e Initialize + 2622
7 _tkinter.cpython-36m-darwin.so 0x0000000b3686ba16 _tkinter_create + 1174
8 python 0x000000010571c088 _PyCFunction_FastCallDict + 200
9 python 0x00000001057f2f4f call_function + 143
10 python 0x00000001057f0abf _PyEval_EvalFrameDefault + 46847
11 python 0x00000001057e4209 _PyEval_EvalCodeWithName + 425
12 python 0x00000001057f3b1c _PyFunction_FastCallDict + 364
13 python 0x000000010569a8b0 _PyObject_FastCallDict + 320
14 python 0x00000001056c1fe8 method_call + 136
15 python 0x00000001056a1efe PyObject_Call + 62
16 python 0x0000000105743385 slot_tp_init + 117
17 python 0x00000001057478c1 type_call + 241
18 python 0x000000010569a821 _PyObject_FastCallDict + 177
19 python 0x00000001056a2a67 _PyObject_FastCallKeywords + 327
20 python 0x00000001057f3048 call_function + 392
21 python 0x00000001057f0b6f _PyEval_EvalFrameDefault + 47023
22 python 0x00000001057f330c fast_function + 188
23 python 0x00000001057f2fac call_function + 236
24 python 0x00000001057f0abf _PyEval_EvalFrameDefault + 46847
25 python 0x00000001057e4209 _PyEval_EvalCodeWithName + 425
26 python 0x00000001057f3b1c _PyFunction_FastCallDict + 364
27 python 0x000000010569a8b0 _PyObject_FastCallDict + 320
28 python 0x00000001056c1fe8 method_call + 136
29 python 0x00000001056a1efe PyObject_Call + 62
30 python 0x00000001057f0cc0 _PyEval_EvalFrameDefault + 47360
31 python 0x00000001057e4209 _PyEval_EvalCodeWithName + 425
32 python 0x00000001057f33ba fast_function + 362
33 python 0x00000001057f2fac call_function + 236
34 python 0x00000001057f0abf _PyEval_EvalFrameDefault + 46847
35 python 0x00000001057f330c fast_function + 188
36 python 0x00000001057f2fac call_function + 236
37 python 0x00000001057f0abf _PyEval_EvalFrameDefault + 46847
38 python 0x00000001057e4209 _PyEval_EvalCodeWithName + 425
39 python 0x00000001057f33ba fast_function + 362
40 python 0x00000001057f2fac call_function + 236
41 python 0x00000001057f0abf _PyEval_EvalFrameDefault + 46847
42 python 0x00000001057e4209 _PyEval_EvalCodeWithName + 425
43 python 0x00000001057f33ba fast_function + 362
44 python 0x00000001057f2fac call_function + 236
45 python 0x00000001057f0b6f _PyEval_EvalFrameDefault + 47023
46 python 0x00000001057e4209 _PyEval_EvalCodeWithName + 425
47 python 0x00000001057f33ba fast_function + 362
48 python 0x00000001057f2fac call_function + 236
49 python 0x00000001057f0abf _PyEval_EvalFrameDefault + 46847
50 python 0x00000001057e4209 _PyEval_EvalCodeWithName + 425
51 python 0x00000001057f33ba fast_function + 362
52 python 0x00000001057f2fac call_function + 236
53 python 0x00000001057f0abf _PyEval_EvalFrameDefault + 46847
54 python 0x00000001057e4209 _PyEval_EvalCodeWithName + 425
55 python 0x00000001057f33ba fast_function + 362
56 python 0x00000001057f2fac call_function + 236
57 python 0x00000001057f0b6f _PyEval_EvalFrameDefault + 47023
58 python 0x00000001057e4209 _PyEval_EvalCodeWithName + 425
59 python 0x00000001057f33ba fast_function + 362
60 python 0x00000001057f2fac call_function + 236
61 python 0x00000001057f0b6f _PyEval_EvalFrameDefault + 47023
62 python 0x00000001057e4209 _PyEval_EvalCodeWithName + 425
63 python 0x000000010583cd4c PyRun_FileExFlags + 252
64 python 0x000000010583c224 PyRun_SimpleFileExFlags + 372
65 python 0x0000000105862d66 Py_Main + 3734
66 python 0x0000000105692929 main + 313
67 libdyld.dylib 0x00007fff59e1608d start + 1
68 ??? 0x0000000000000002 0x0 + 2
)
libc++abi.dylib: terminating with uncaught exception of type NSException
以下是安装在环境中的相关依赖项列表(为简洁起见,省略了不相关的依赖项):
我也有过类似的经历,其他地方发布的解决方案并没有为我解决问题。最终,我通过降级matplotlib版本(即,
conda install matplotlib=2.2.3
解决了大多数情况下的问题:
conda install nomkl
我曾尝试过以下我遇到的解决方案。不幸的是,其中许多都没有成功,其背后的原因也不是很清楚: 我在mac OS Mojave中使用conda安装的Tensorflow 2.0 MKL和python3.6
conda install matplotlib==2.2.3
conda install -c intel mkl
conda uninstall openmp
conda install openmp
import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'
conda install nomkl
conda install matplotlib==2.2.3
conda install -c intel mkl
conda uninstall openmp
conda install openmp
conda install matplotlib==2.2.3
conda install -c intel mkl
conda uninstall openmp
conda install openmp
conda uninstall tensorflow
pip install tensorflow==2.0.0
我一直遇到这个错误,这似乎与基于依赖关系的安装和conda丢失符号链接有关 例如: 我在我的conda环境中安装了一个带有pip的软件包,该软件包具有torch依赖项,并且安装成功-但是在导入时,我遇到了上述错误。
lib/
看起来如下:
~/opt/anaconda3/lib ll|grep libomp
lrwxr-xr-x 1 user staff 12B Dec 31 12:17 libgomp.1.dylib -> libomp.dylib
lrwxr-xr-x 1 user staff 12B Dec 31 12:17 libgomp.dylib -> libomp.dylib
lrwxr-xr-x 1 user staff 12B Dec 31 12:17 libiomp5.dylib -> libomp.dylib
-rwxrwxr-x 1 iser staff 642K Dec 31 12:17 libomp.dylib
然后我使用了conda install pytorch
,它确实安装了额外的软件包
~/opt/anaconda3/lib ll|grep libomp
lrwxr-xr-x 1 user staff 12B Dec 31 12:17 libgomp.1.dylib -> libomp.dylib
lrwxr-xr-x 1 user staff 12B Dec 31 12:17 libgomp.dylib -> libomp.dylib
lrwxr-xr-x 1 user staff 12B Mar 10 14:59 libiomp5.dylib -> libomp.dylib
-rwxrwxr-x 2 user staff 646K Jan 15 22:21 libomp.dylib
因此,libomp.dylib
和libiomp5.dylib
symlink得到更新。导入工作正常
以前,我还通过在这些库之间手动创建符号链接修复了此问题…因此,请检查这是否对您有效!非常感谢!!我快疯了。如果您使用的是英特尔体系结构,我建议使用
conda install-n myenv-c intel matplotlib
。这将安装matplotlib的LTS版本(即版本2.2.3
)当您使用conda update--all-y
升级所有软件包时,它会阻止您升级到3.x.y
。谢谢,这对我来说很有效。您知道它为什么会修复此问题以及导致此问题的原因吗?@JulienPerrenoud抱歉,不知道为什么或什么-在隐藏的GitHub线程中搜索了几天后才找到此链接…我想ught这意味着MKL将根本不被使用,性能将受到影响。但显然不是这样-MKL是间接使用的。请参阅。在我的MacBook上使用Core i9 CPU时,使用和不使用nomkl的性能与使用nomkl的简单多层感知器的性能是一样的。这在一开始对我不起作用,似乎我的安装失败了Anaconda(可能是因为我从miniconda开始,然后尝试使用完整的Anaconda软件包进行更新)。我必须完全删除Anaconda并重新安装它,这个修复程序成功了。卸载conda的tensorflow并从pip重新安装对我有效。感谢分享!