Python-ImportError: No module named librosa(或其他库)解决方法

运行python程序时,经常会遇到一种错误类型:ImportError: No module named xxx,其中xxx一般是一个库。比如,我最近跑GitHub上的代码时,就提示ImportError: No module named librosa。有两种方法可以解决这个问题。

方法1:检查python中是否已安装该库。首先在命令行中输入 pip list,检测python是否已安装该库。若已安装,直接看方法2;若未安装,输入 pip install xxx,安装该库。安装好了之后,再次运行python程序。若不再报该ImportError错误,则问题解决;若仍报错,看方法2。  

 方法2:不少人并不能用方法1解决ImportError错误。通常遇到的情况是:在pip中安装了xxx,在交互模式中输入import xxx也能导入该模块,但是该python程序运行后仍然报错ImportError: No module named xxx。我们可以判断该错误很有可能是python解释器路径导致的,因为交互模式和python文件执行环境可能不同。 我们可以按照下面的过程排查问题。

  •  首先在命令行中输入pip show xxx,查看这个模块安装的路径。下面以librosa为例。可以看到,这个库安装在python3.5的路径中。

  • 接着,在报错的python文件的头部加入下面三行代码。再次运行该程序。虽然仍会报错,但是我们关注点在于这三行代码的输出。
import sys
print(sys.path)
print(sys.executable)
  • 查看上面三行代码的输出结果。
[
'/public/alpaca/CNN-for-single-channel-speech-enhancement-master', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/public/alpaca/.local/lib/python2.7/site-packages', 
'/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages/PILcompat', 
'/usr/lib/python2.7/dist-packages/gtk-2.0', 
'/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']
/usr/bin/python
  • 可以看出,这个python文件在运行时,进入的是python2.7的路径,所以无法搜索到之前在python3.5中安装的xxx模块,导致报错。

找到报错的原因后,解决方案就简单了。在该python文件头部加上"#!/usr/bin/env python",注明python运行环境,确保程序能使用当前的环境运行该程序。且该程序所在目录下的所有python文件最好都加上这句。并且不建议写"#!/usr/bin/python",因为这么写会进入系统默认python的路径,当使用conda时,不会进入conda环境中指定的环境。而前一种表述就能自动进入指定的虚拟环境。

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值