PyCall导入(“numpy”)产生MKL致命错误

2024-06-16 08:50:08 发布

您现在位置:Python中文网/ 问答频道 /正文

背景:

使用Mac10.15,我刚刚安装了python、conda和julia

然后,我使用conda安装numpy,并安装了juliapycall,将ENV[“PYTHON”]指向conda可执行文件(在PYTHON中输出sys.executable和所需的conda环境)

我有一个使用numpy的python库“mylib”

问题

当我试图

pyimport("mylib")

我得到

Intel MKL FATAL ERROR: Cannot load libmkl_intel_thread.dylib.

我发现这是由于julia使用的64位MKL库和python使用的32位MKL库之间存在冲突:

https://www.reddit.com/r/Julia/comments/jj7ubh/pycall_intel_mkl_error/

https://github.com/JuliaPy/PyCall.jl/issues/443

julia表单中给出的解决方案建议使用更改的标志重新编译julia。 这似乎是不必要的痛苦,还有其他选择吗


Tags: httpsnumpyenvcom可执行文件sysconda指向
1条回答
网友
1楼 · 发布于 2024-06-16 08:50:08

我找到的最佳解决方案是创建一个单独的conda环境,它不使用MKL,并使用python二进制文件与julia一起工作

由于此解决方案的一部分分散在各处,使我头痛不已,因此我想我会在这里收集所有内容:

创建没有MKL的Conda环境

How to install scipy without mkl

我特别建议:

conda create -n pynomkl python nomkl

然后像往常一样安装软件包

conda install -n pynomkl numpy pandas scipy scikit-learn ...

这样做将创建一个特殊的conda环境和python二进制文件,您只需使用julia的PyCall即可。这样,您就可以继续将MKL用于其他纯python的工作

找出python二进制文件的位置:

> conda activate pynomkl                          (base) 
> python                                       (pynomkl)
>>> import sys
>>> sys.executable
'pathtopython/../python'

无修复PyCall:在julia中:

ENV["PYTHON"]="pathtopython/../python"
using Pkg ; Pkg.build("PyCall")

在那之后一切都会好起来的。如果julia pyimport代码需要任何库,请确保立即在pynomkl环境中安装它们

相关问题 更多 >