ModuleNotFoundError:没有名为“ pyaudio”的模块(Windows)

Pan*_*ari 1 python pip pyaudio

我已经使用安装了pyaudio模块pip。但是,当我尝试导入它时,Python说找不到该模块:

C:\Users\hp>pip install pyaudio
Requirement already satisfied: pyaudio in c:\users\hp\appdata\local\programs\python\python37\lib\site-packages (0.2.11)
Run Code Online (Sandbox Code Playgroud)
>>> import pyaudio
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pyaudio'
Run Code Online (Sandbox Code Playgroud)

Python为什么找不到已安装的模块?

wov*_*ano 7

经常有人使用来安装Python套件pip,但似乎无法将其导入Python中。要了解为什么会发生这种情况,您必须知道Windows如何找到要运行的可执行文件,以及如何安装Python软件。基础:

  • 运行命令时,Windows在环境变量PATH中搜索可执行文件。它执行找到的第一个。
  • Python解释器,python.exe安装在<PYTHON_INSTALL_DIR>(例如C:\Python\3.7)中。
  • Python的工具,如pippylintvirtualenvPyCrust,等,安装在<PYTHON_INSTALL_DIR>\Scripts
  • Windows的Python启动器py.exe,安装在Windows系统目录(例如C:\Windows)中。
  • pythonpip命令使用在其安装目录中找到的模块,而不查看PATH。

因此,假设您具有以下Python版本:

C:\Python\2.7
C:\Python\3.6
C:\Python\3.7
Run Code Online (Sandbox Code Playgroud)

并且您的PATH环境包含以下目录:

C:\Python\2.7
C:\Python\3.6\Scripts
Run Code Online (Sandbox Code Playgroud)

然后,请参见以下输出:

C:\>python -V
Python 2.7.16

C:\>pip -V
pip 19.1.1 from c:\python\3.6\lib\site-packages\pip (python 3.6)

C:\>py -V
Python 3.7.3
Run Code Online (Sandbox Code Playgroud)

因此,在运行时pip,可能会将软件包安装在另一个Python版本中,而不是在运行时将获得的版本python

要查看系统上(正确)安装了哪些版本,请运行py -0p。输出示例:

C:\>py -0p
Installed Pythons found by py Launcher for Windows
 -3.7-64        C:\Python\3.7-64\python.exe *
 -3.7-32        C:\Python\3.7-32\python.exe
 -3.6-64        C:\Python\3.6-64\python.exe
 -2.7-64        C:\Python\2.7-64\python.exe
 -2.7-32        C:\Python\2.7-32\python.exe
Run Code Online (Sandbox Code Playgroud)

通用解决方案(适用于Windows)

最好的办法是不要依赖您的系统PATH。使用py启动器选择所需的版本。要运行与pip您要使用的Python版本相对应的模块,请pip以模块而不是可执行文件的形式启动。所以代替:

pip install <package>
Run Code Online (Sandbox Code Playgroud)

跑:

py -3.6 -m pip install <package>
Run Code Online (Sandbox Code Playgroud)

要查看为该Python版本安装了哪些Python软件包,请使用:

py -3.6 -m pip freeze
Run Code Online (Sandbox Code Playgroud)

一些补充说明

  • 在安装过程中可以选择是否将Python安装添加到您的PATH中。如果添加了它,它将添加在PATH的开头,因此将首先选择最新安装的Python版本。
  • Windows系统目录应始终位于PATH中,因此py即使您未在PATH中添加任何Python安装,该命令也将始终可用。
  • 如果您从Windows资源管理器中双击.py文件,或在命令提示符下(例如test.py)直接将文件名作为命令键入,则该操作由Windows注册表确定。该文件可能会在您的IDE中打开,或者使用Python解释器执行。在这种情况下,它可能是最新安装的Python版本。该命令python test.py使用的Python版本可能不同于该命令test.py
  • 某些安装还包括名为python2/ python3(在Windows上不是),pip3/ pip3.7(在Windows上也是如此)等的可执行文件。这也将允许您指定要使用的版本。这些在存在这些二进制文件且在路径中的系统上将很有用。

  • 顺便说一句很好的答案! (2认同)