ModuleNotFoundError: нет модуля с именем «pyaudio» (Windows) - PullRequest
1 голос
/ 04 июня 2019

Я установил модуль 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)
>>> import pyaudio
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pyaudio'

Почему Python не может найти установленный модуль?

1 Ответ

5 голосов
/ 05 июня 2019

Часто случается, что кто-то устанавливает пакет Python, используя pip, но затем не может импортировать его в Python. Чтобы понять, почему это происходит, вы должны знать, как Windows находит исполняемые файлы и как устанавливается программное обеспечение Python. Основы:

  • При выполнении команды Windows ищет исполняемый файл в переменной среды PATH. Выполняет первый найденный.
  • Интерпретатор Python, python.exe, установлен в <PYTHON_INSTALL_DIR> (например, C:\Python\3.7).
  • Инструменты Python, такие как pip, pylint, virtualenv, PyCrust и т. Д., Установлены в <PYTHON_INSTALL_DIR>\Scripts.
  • Средство запуска Python для Windows py.exe установлено в системном каталоге Windows (например, C:\Windows).
  • python и pip используют модули, найденные в каталоге, в котором они установлены, они не смотрят на 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, чем версия, которую вы получите при запуске 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, чтобы выбрать нужную версию. Чтобы запустить модуль pip, соответствующий версии Python, которую вы хотите использовать, запустите pip как модуль вместо исполняемого файла. Так что вместо:

pip install <package>

пробег:

py -3.6 -m pip install <package>

Чтобы увидеть, какие пакеты Python вы установили для этой версии Python, используйте:

py -3.6 -m pip freeze

Некоторые дополнительные замечания

  • Независимо от того, добавлена ​​ли установка Python в PATH или нет, это вариант во время установки. Если он добавлен, он добавляется в начале PATH, поэтому сначала будет выбрана последняя установленная версия Python.
  • Системный каталог Windows всегда должен быть в вашей переменной PATH, поэтому команда py всегда будет доступна, даже если вы не добавляли установку Python в вашу переменную PATH.
  • Если дважды щелкнуть файл .py в проводнике Windows или ввести имя файла непосредственно в качестве команды в командной строке (например, test.py), то действие определяется из реестра Windows. Возможно, файл будет открыт в вашей среде IDE или что он будет выполнен с использованием интерпретатора Python. В этом случае это, вероятно, самая последняя установленная версия Python. Возможно, команда python test.py использует версию Python, отличную от команды test.py.
  • Некоторые установки также включают исполняемые файлы с именами python2 / python3 (не в Windows), pip3 / pip3.7 (также в Windows) и т. Д. Это также позволит вам указать, какую версию использовать. Они были бы полезны в системах, где эти двоичные файлы существуют и находятся в пути.
...