模块未找到错误:找不到名为'...'的模块。

7

我使用 pip 安装了 pyaudio 模块。但是,当我尝试导入它时,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)

>>> import pyaudio
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pyaudio'

为什么Python找不到已安装的模块?
(我正在使用Python 3.7版本。)
2个回答

20

经常会出现这样的情况,有人使用pip安装了Python软件包,但在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

并且你的 PATH 环境变量包含以下目录:

C:\Python\2.7
C:\Python\3.6\Scripts

然后,看以下输出:

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

因此,在运行pip时,安装的包可能与运行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

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

最好不要依赖于系统的PATH。使用py启动器来选择您想要的版本。为了运行与您想要使用的Python版本相对应的pip模块,请将pip作为模块而不是可执行文件启动。

pip install <package>

运行:

py -3.6 -m pip install <package>

要查看您已安装的特定Python版本的Python软件包,请使用以下命令:

py -3.6 -m pip freeze

几点额外说明

  • 在安装时,将Python添加到环境变量中还是不添加,是一个选项。如果添加了,它会被添加到PATH的开头,因此最近安装的Python版本将首先被选中。
  • Windows系统目录应始终位于PATH中,因此即使您没有将任何Python安装程序添加到PATH中,也应始终可以使用py命令。
  • 如果您在Windows资源管理器中双击.py文件或在命令提示符中直接键入文件名作为命令(例如test.py),则操作将根据Windows注册表确定。文件可能会在IDE中打开,也可能会使用Python解释器执行。这种情况下,通常会使用最近安装的Python版本。命令python test.py使用的Python版本可能与命令test.py不同。
  • 有些安装程序还包括名为python2/python3(不适用于Windows)、pip3/pip3.7等可执行文件。这也允许您指定要使用的Python版本。这些对于那些已存在这些二进制文件并且在路径中的系统非常有用。

py 是一个仅限于 Windows 平台的工具吗? - xrisk
是的,不幸的是它只能在Windows上使用。 - wovano
2
顺便说一句,回答得很好! - xrisk

4

你可能认为 python -m pip install pyaudio 可以解决问题,但事实并非如此。

要安装 pyaudio,你首先需要使用以下命令安装 pipwin:

pip install pipwin

pipwin是一个补充工具,用于Windows上的pip。pipwin安装非官方的Python包。

接下来,使用pipwin安装pyaudio:

pipwin install pyaudio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接