【Python】Python安装升级mkl包

1、问题背景

近期在使用faiss包构建knn索引的时候,经常会抛出一个Error:Intel MKL FATAL ERROR: Cannot load libmkl_avx512.so or libmkl_def.so

Intel MKL FATAL ERROR: Cannot load libmkl_avx512.so or libmkl_def.so

应该是faiss包在导入mkl包时出现了异常,解决这个问题的方法是在python脚本中导入mkl包:

import mkl
mkl.get_max_threads()

添加这两行代码之后,faiss抛出的问题理论上可解决,但是如果服务器上的mkl包不完整或者版本较低,就会遇到新的问题,解决方案通常都是Google之然后改之。

假设服务器上没有mkl包或者缺少mkl-service包(此时的服务器上有mkl-fft和mkl-random),那么抛出的Error变成:ImportError: No module named mkl

import mkl
ImportError: No module named mkl

2、解决mkl包的问题

赶紧查看一下是否安装了mkl:

pip list|grep 'mkl'

抓到两个python包:

  • mkl-fft(1.0.10)
  • mkl-random(1.0.2)

在python环境import mkl直接Error:ImportError: libmkl_rt.so: cannot open shared object file: No such file or directory

是不是缺了一个mkl-service包?

解决流程:

# python/pip版本
which python  # ~/anaconda2/bin/python
python -V  # Python 2.7.16 :: Anaconda, Inc.

which pip  # ~/anaconda2/bin/pip
pip -V  # pip 20.2.3 from /home/work/anaconda2/lib/python2.7/site-packages/pip (python 2.7)

1、Github给出的安装mkl-service的方法是使用下面两条conda命令中的一条,但是直接使用github提供的命令安装失败,一步一步来吧。。。

conda install -c intel mkl-service
conda install -c conda-forge mkl-service

2、直接更新mkl

这里其实有点凌乱,conda list是有完整的mkl+mkl-service+mkl_fft+mkl_random四个包,但是pip list只有mkl_fft+mkl_random两个包...

conda update mkl

Error:CondaMultiError: RemoveError: 'setuptools' is a dependency of conda and cannot be removed from
conda's operating environment.

解决这个问题的方法一般是更新conda:

conda update conda

继续报出同样的Error(不确定error,有的时候conda能更新成功,有的时候就失败了,可理解为是玄学)。

Google说加上--force参数可行:

conda update --force conda

conda更新成功

3、如果mkl包的版本较低的话,可以进行一下升级

conda update mkl

没有抛出Error,升级成功。

3、升级conda触发的pip问题

升级了conda之后,pip命令居然不能使用了,pip list命令Error如下:ImportError: cannot import name PackageFinder

ImportError: cannot import name PackageFinder

解决方法:安装或者升级pip

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

done。

查看下mkl,原来缺少的mkl-service包也安装上了。

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的内容,可以通过以下步骤来判断Python是否安装mkldnn: 1. 首先,确保已经安装Python 3.6及以上版本,并且已经安装了相关的依赖库,如liblapack-dev、gfortran、libfreetype6-dev等。 2. 然后,可以使用pip命令来安装paddlepaddle库,如引用\[2\]中所示。安装完成后,可以使用以下代码来判断是否安装mkldnn: ```python import paddle if paddle.is_compiled_with_mkldnn(): print("Python安装mkldnn") else: print("Python安装mkldnn") ``` 3. 如果以上方法无法判断,可以参考引用\[3\]中的内容,检查是否安装了shapely、scikit-image、imgaug等相关库,这些库可能与mkldnn有关。 总结起来,可以通过检查是否安装了paddlepaddle库以及相关依赖库,或者检查是否安装了与mkldnn相关的其他库来判断Python是否安装mkldnn。 #### 引用[.reference_title] - *1* [模型部署实战:教你用笔记本电脑实现实时“口罩检测”](https://blog.csdn.net/weixin_45449540/article/details/106132152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [PaddleOCR本地部署(安装,使用,模型优化/加速)](https://blog.csdn.net/Castlehe/article/details/117356343)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值