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

Python PyCall导入(“numpy”)产生MKL致命错误,python,julia,conda,intel-mkl,Python,Julia,Conda,Intel Mkl,背景: 使用Mac10.15,我刚刚安装了python、conda和julia 然后,我使用conda安装numpy,并安装了juliapycall,将ENV[“PYTHON”]指向conda可执行文件(在PYTHON中输出sys.executable和所需的conda环境) 我有一个使用numpy的python库“mylib” 问题 当我试图 pyimport("mylib") 我得到 我发现这是由于julia使用的64位MKL库和python使用的32位MKL库之间存在

背景:

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

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

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

问题

当我试图

pyimport("mylib")
我得到

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

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

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

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

创建没有MKL的Conda环境

我特别建议:

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环境中。

我猜您正在尝试使用32位anaconda。通常,MKL采用64位版本
ENV["PYTHON"]="pathtopython/../python"
using Pkg ; Pkg.build("PyCall")