无法找到模块,即使它已安装并且可以 运行

Cant find module even though its installed and can run

我研究了 Python 的语音识别功能,到目前为止效果很好。 它提供了广泛的软件,但我将使用 CMUSphinx,因为它可以离线工作。 CMUSphinx 在通过他们自己的程序 cmupshinx_continous 启动时已安装并正常工作。但是当尝试编写我自己的 Python-脚本时,它找不到模块 speech_recognition。这很奇怪,因为当我 运行:

python -m speech_recognition

它工作得很好。但是当我开始我的脚本时:

import speech_recognition as sr

    # obtain audio from the microphone
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("Say something!")
        audio = r.listen(source)

    # recognize speech using Sphinx
    try:
        print("Sphinx thinks you said " + r.recognize_sphinx(audio))
    except sr.UnknownValueError:
        print("Sphinx could not understand audio")
    except sr.RequestError as e:
        print("Sphinx error; {0}".format(e))

我收到模块的错误消息:speech_recognition 无法找到。 使用时

pip install SpeechRecognition

我第一次使用 sudo pip install 但当它不起作用时我想可能是因为我将它安装在 root 中。所以我卸载了它并使用 pip install --user SpeechRecognition 而不是无济于事。 我也尝试用 PYTHONPATH 添加一些东西,但我不知道我尝试做什么。

所以现在我很困惑。请记住,我对 Linux 和 Python 都非常陌生。

有什么我可以尝试的想法吗?

看起来该软件包已安装在其他版本的 python 中。

尝试输入 sudo python -m pip install SpeechRecognition

它对我有用。如果不是最好的办法是:

  1. 转到repo
  2. 克隆它
  3. 安装它

在继续之前尝试第一种方法。

几乎总是当你可以从一个点访问一个模块但不能从另一个点访问时(想想 script/program、terminal/editor、...)你有多个 python 版本并且只安装其中之一的模块。

在您的情况下,IDLE 使用与您在终端上不同的 python 版本。你有多种可能性:

  • 配置 IDLE 以使用您在终端上使用的版本
  • 使用 IDLE 使用的版本(并重新安装所有模块)
  • 不要使用 IDLE 来 运行 您的脚本,而是使用 python myscript.py

你提到IDLE是python3,一般在终端python是python2。您可以尝试 python --version 来显示您使用的 python 版本。 python3 可能是您在 IDLE 中使用的 python,pip 可能是 pip3.

因为库确实支持 python3 我建议使用 python3 而不是 python2。

不幸的是,IDLE 不是一个很好的编辑器,我推荐其他东西,比如 notepad++、pycharm、vim 或 emacs。