Часто случается, что кто-то устанавливает пакет 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) и т. Д. Это также позволит вам указать, какую версию использовать. Они были бы полезны в системах, где эти двоичные файлы существуют и находятся в пути.