Ошибка «No module named 'requests'» в Termux: причины и пошаговое решение

Ошибка 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

Выполнено: 0 / 5

Если 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.
📊 Что помогло вам устранить ошибку No module named requests?
Просто pip install requests
Установка через python -m pip
Переустановка Python через pkg
Обновление pip и очистка кэша

Обновление 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, его потребуется адаптировать под третью версию.