Ошибка ModuleNotFoundError: No module named 'requests' в Termux означает, что интерпретатор Python не находит библиотеку requests в своём окружении — либо она не установлена, либо установлена для другой версии Python, чем та, которой запускается скрипт. Это одна из самых частых проблем при запуске Python-скриптов на Android через Termux, и решается она в большинстве случаев одной командой установки пакета.
Однако бывают ситуации сложнее: pip ставит пакет, а ошибка остаётся. Причины — несколько версий Python в системе, повреждённый кэш пакетов, устаревший pip или конфликт окружений. Ниже разберём все сценарии по порядку: от простой установки до диагностики нестандартных случаев.
Почему возникает ошибка No module named requests
Библиотека requests не входит в стандартную поставку Python — это сторонний пакет, который нужно устанавливать отдельно через менеджер пакетов pip. Когда вы запускаете скрипт с строкой import requests, интерпретатор ищет модуль в каталогах site-packages своей установки. Если пакета там нет, Python выбрасывает исключение ModuleNotFoundError.
В Termux ситуацию усложняет специфика среды: это эмулятор терминала Linux на Android с собственной структурой каталогов (префикс /data/data/com.termux/files/usr). Пакеты, установленные в системный Python другого приложения или в другое окружение, вашему скрипту недоступны.
- 📦 Библиотека requests просто не установлена — самая частая причина
- 🔀 Установлено несколько версий Python, и pip ставит пакет не в ту
- 🧹 Устаревший pip или повреждённый кэш пакетов
- 🌐 Отсутствие интернета или блокировка репозитория во время установки
- 🐍 Скрипт запущен через
python2или устаревшую версию интерпретатора
Быстрое решение: установка requests через pip
Сначала убедитесь, что в Termux установлен сам Python. Если вы только поставили Termux, выполните обновление репозиториев и установку интерпретатора:
pkg update && pkg upgrade
pkg install python
После этого установите библиотеку requests через pip:
pip install requests
Если установка прошла успешно, вы увидите строку вида Successfully installed requests ... вместе с зависимостями (urllib3, certifi, charset-normalizer, idna). Проверить результат можно прямо в терминале:
python -c "import requests; print(requests.__version__)"
Команда выведет номер версии библиотеки без ошибок — значит, модуль подключён корректно, и скрипт должен запуститься.
☑️ Установка requests в Termux
Если pip ставит пакет, но ошибка остаётся
Типичный сценарий: pip install requests отработал, а скрипт всё равно падает с ModuleNotFoundError. Здесь почти наверняка несовпадение версий: pip привязан к одному интерпретатору, а скрипт запускается другим. Проверьте, куда ссылаются команды:
which python
which pip
python --version
pip --version
Обратите внимание на пути и версии в выводе. Если pip относится, например, к Python 3.11, а python — к другой версии, пакеты ставятся «не туда». Надёжный способ избежать путаницы — вызывать pip как модуль конкретного интерпретатора:
python -m pip install requests
Так pip гарантированно установит пакет именно для того Python, которым вы запускаете скрипт. Этот приём стоит использовать всегда, когда в системе могла остаться более одной версии интерпретатора.
⚠️ Внимание: если вы когда-либо устанавливали Python не черезpkg, а из сторонних источников или копировали чужие окружения, пути кsite-packagesмогут отличаться. В таком случае проще удалить лишние установки и переустановить Python штатно черезpkg install python.
Обновление pip и проблемы с сетью
Иногда установка пакета обрывается с ошибками загрузки: таймауты, SSLError, невозможность найти версию пакета. Первая мера — обновить сам pip до актуальной версии:
python -m pip install --upgrade pip
Если загрузка не идёт из-за нестабильного соединения, можно повторить команду с увеличенным таймаутом:
pip install --timeout 120 requests
Также проверьте, что Termux имеет доступ в интернет: попробуйте ping -c 3 pypi.org. Если пакеты не скачиваются при работающем интернете, возможной причиной бывает устаревший индекс репозиториев Termux — выполните pkg update и повторите установку.
Установка через pkg и альтернативные способы
В репозиториях Termux некоторые Python-библиотеки доступны как готовые пакеты. Для requests основной способ — pip, но стоит знать про альтернативы и смежные случаи. Например, тяжёлые пакеты вроде numpy или cryptography иногда проще ставить через pkg install python-numpy, потому что сборка из исходников через pip требует компилятора и занимает много времени.
Если pip при установке requests пытается что-то компилировать и падает с ошибкой сборки, установите инструменты разработки:
pkg install clang make
Для самого requests компиляция обычно не требуется — пакет распространяется в виде готового wheel. Но его зависимости в старых версиях могли требовать сборку, поэтому держать pip обновлённым важно.
| Способ установки | Команда | Когда использовать |
|---|---|---|
| pip напрямую | pip install requests | Стандартный случай, одна версия Python |
| pip как модуль | python -m pip install requests | Несколько версий Python, путаница с путями |
| С увеличенным таймаутом | pip install --timeout 120 requests | Нестабильное соединение, обрывы загрузки |
| Принудительная переустановка | pip install --force-reinstall requests | Повреждённая установка пакета |
Что делать, если pip вообще не найден
Если команда pip не распознаётся, вероятно, Python установлен не полностью. Выполните pkg install python — вместе с интерпретатором ставится и pip. Проверить можно командой python -m ensurepip --upgrade, которая восстановит pip, если он был повреждён.
Виртуальные окружения и изоляция пакетов
Если вы работаете с несколькими проектами в Termux, полезно изолировать зависимости через venv. Тогда библиотеки одного проекта не конфликтуют с другими, а ошибки вида «модуль не найден» локализуются внутри конкретного окружения:
python -m venv myproject
source myproject/bin/activate
pip install requests
После активации окружения команда python будет указывать на интерпретатор внутри venv, и pip install станет ставить пакеты туда. Выйти из окружения — командой deactivate. Учтите: если вы установили requests внутри окружения, а скрипт запускаете вне его, ошибка ModuleNotFoundError появится снова — это нормальное поведение изоляции.
⚠️ Внимание: активированное виртуальное окружение действует только в текущей сессии терминала. После перезапуска Termux его нужно активировать заново командой source путь/к/окружению/bin/activate, иначе скрипт снова не найдёт установленные пакеты.
Диагностика сложных случаев
Когда стандартные шаги не помогают, соберите диагностическую информацию. Команда ниже покажет, какие каталоги Python просматривает в поиске модулей:
python -c "import sys; print(sys.path)"
Затем проверьте, видит ли pip установленный пакет и куда он установлен:
pip show requests
В выводе будет строка Location: с путём к каталогу. Сравните его со списком из sys.path — если пути не пересекаются, в этом и кроется проблема. Как временную меру можно запустить скрипт с явным указанием пути к пакетам через переменную PYTHONPATH, но правильнее привести установку к одному интерпретатору.
Ещё одна возможная причина — файл с именем requests.py в папке вашего скрипта. Python сначала ищет модули в текущем каталоге, и ваш собственный файл «затеняет» настоящую библиотеку. Переименуйте файл, удалите рядом с ним каталог __pycache__ и запустите скрипт снова.
Частые вопросы
Чем отличаются ошибки ModuleNotFoundError и ImportError?
ModuleNotFoundError — частный случай ImportError, возникающий, когда модуль вообще не найден в путях поиска. ImportError может также означать, что модуль найден, но не может быть загружен из-за внутренней ошибки или отсутствующего имени внутри него.
Нужен ли root для установки requests в Termux?
Нет. Termux работает в собственной изолированной среде внутри каталога приложения, и установка Python-пакетов через pip не требует root-прав. Все файлы размещаются в префиксе Termux, доступном без особых привилегий.
Почему после обновления Termux requests пропал?
Если обновление затронуло версию Python (например, сменилась минорная версия интерпретатора), каталог site-packages меняется, и пакеты нужно установить заново для новой версии: python -m pip install requests.
Можно ли установить requests без интернета?
Да, если заранее скачать wheel-файл пакета и его зависимостей с PyPI на другом устройстве, перенести в хранилище телефона и установить локально: pip install /sdcard/Download/requests-файл.whl. Зависимости придётся перенести и установить тем же способом.
Скрипт запускается через python2 — в чём проблема?
Python 2 давно не поддерживается, и современные версии requests с ним несовместимы. Установите актуальный Python через pkg install python и запускайте скрипт командой python (в Termux это Python 3). Если скрипт написан под Python 2, его потребуется адаптировать под третью версию.