#Что происходит и когда возникает ошибка
Одна команда pip может относиться к Python 3.11, а программа запускаться на Python 3.12 или внутри .venv. Поэтому установка формально успешна, но нужной версии библиотеки в приложении нет.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Команды python и pip из разных папокPATH выбирает самостоятельные исполняемые файлы. | pip --version показывает иной Python, чем python --version | Связать pip с интерпретатором через -m. |
| Несколько версий PythonНа машине установлены несколько Python, каждый с собственными пакетами. | После выбора интерпретатора в редакторе всё меняется | Выбирать версию явным путём или через py -3.x. |
| Сервис имеет иной исполнительСлужба запускается другим пользователем и/или Python. | В терминале импорт работает, в приложении-службе — нет | Исправить команду запуска сервиса. |
#Подробная диагностика и исправление
- Сравните версии и местоположенияВ терминале проекта последовательно выполните команды. В строке
pip ... (python X.Y)сравните X.Y с выводомpython --version. Если отличаются, причина почти найдена. В Windowswhere pythonиwhere pipпоказывают порядок найденных файлов, в Linux/macOS —command -v.Linux · Терминал (Bash)КомандаОбычный терминал; дополнительных прав не требуется.python --versionpython -m pip --versionpip --version
- Посмотрите реальный исполняемый файлВыполните короткую команду и сохраните путь
sys.executable. Сравните его со значением в конфигурации редактора, сервиса или планировщика. ПримерC:\...\Python312\python.exeозначает отдельную установку от.venv\Scripts\python.exe. - Подходит для всех систем при правильной команде pythonLinux · Терминал (Bash)КомандаПодходит для всех систем при правильной команде python.
python -c "import sys; print(sys.executable)"
- На Windows выберите нужную версию явноЕсли установлен Python Launcher,
py -0pпоказывает доступные интерпретаторы и пути; команда может не работать в новых инсталляциях без пусковой утилиты. Затемpy -3.12 -m pip --versionпроверяет pip именно версии 3.12. Если версия иная, подставьте свою; на Linux/macOS используйте исполняемый файл конкретного Python. - Только Windows с установленным py launcher; 3.12 — пример, а не обязательная версияLinux · Терминал (Bash)КомандаТолько Windows с установленным py launcher; 3.12 — пример, а не обязательная версия.
py -0ppy -3.12 -m pip --version
- Создайте среду из целевого PythonВ папке проекта выберите требуемый интерпретатор и выполните создание нового окружения в отдельной папке, например
.venv-new. Проверьте, что в ней есть Python нужной версии. Не перезаписывайте рабочее.venvдо успешного запуска приложения.Linux · Терминал (Bash)Команда.venv-new создаётся из именно того python, который найден предыдущей командой.python -m venv .venv-new
- Установите зависимости и проверьтеАктивируйте новую среду или используйте её Python по полному пути. Установите зависимости из файла проекта, если он есть. Затем вызовите
python -m pip check: при исправных требованиях будетNo broken requirements found.; эта проверка не гарантирует отсутствие ошибок самого приложения.Linux · Терминал (Bash)С осторожностьюКоманды выполняйте только после активации новой среды; если файла requirements.txt нет, установите заявленные зависимости по документации проекта.python -m pip install -r requirements.txtpython -m pip checkКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- Исправьте путь запуска приложенияДля IDE, рабочего процесса и службы выберите Python из новой среды; повторите тест. Если проблема осталась, запишите версию и путь прямо внутри падающего процесса. Не удаляйте исходное окружение, пока вся проверка не пройдена.
#Проверка результата и действия при неуспехе
При запуске приложения и при вызове python -m pip --version используются совпадающие Python и каталог окружения; нужные модули импортируются.
Если исправление не помогло, вернитесь к точному сообщению об ошибке, сохраните версию Python, адрес целевого окружения и очищенный от секретов журнал; выясните, на каком шаге результат отличается от ожидаемого. Не изменяйте глобальный Python ради устранения сбоя проекта.