PyCall import("numpy") 产生 MKL 致命错误
PyCall import("numpy") produces MKL FATAL ERROR
背景:
使用 mac 10.15,我刚刚安装了 python、conda 和 julia。
然后我使用 conda 安装了 numpy 并安装了 julia PyCall 指向 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。
这似乎是不必要的痛苦,还有其他选择吗?
我找到的最佳解决方案是创建一个单独的 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 环境中。
背景:
使用 mac 10.15,我刚刚安装了 python、conda 和 julia。
然后我使用 conda 安装了 numpy 并安装了 julia PyCall 指向 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。 这似乎是不必要的痛苦,还有其他选择吗?
我找到的最佳解决方案是创建一个单独的 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 环境中。