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-ImportError: No module named librosa(或其他库)解决方法_第1张图片

  • 接着,在报错的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环境中指定的环境。而前一种表述就能自动进入指定的虚拟环境。

 

你可能感兴趣的:(Python,librosa,ImportError,Python基础)