2 октября 2026 г.
python: can't open file … [Errno 2] No such file or directory — бот не находит главный файл
Бот даже не начинает работать: в логе одна строка python: can't open file '/app/main.py': [Errno 2] No such file or directory, и процесс завершается. Ни traceback, ни ошибок в коде, потому что до кода дело не дошло.
Что значит эта ошибка
Python запустили командой вида python main.py, а файла с таким именем по этому пути нет. Это ошибка не в вашем коде, а в команде запуска: она указывает не на тот файл.
Причины по убыванию вероятности
- Главный файл называется иначе. Команда ждёт
main.py, а у васbot.py,01bot.pyилиtelegram_bot.py. Самый частый случай. - Код лежит во вложенной папке. В репозитории
my-bot/bot.pyилиsrc/bot.py, а команда ищет файл в корне. - Опечатка или регистр.
Bot.pyиbot.pyна Linux — разные файлы, хотя на Windows и macOS это одно и то же. - Файл не закоммичен. Он есть у вас на диске, но не попал в git (забыли
git addили он в.gitignore).
Как исправить
- Откройте репозиторий на GitHub и посмотрите, что лежит в корне. Именно там, в браузере, а не у себя на диске: так вы увидите то, что видит сервер.
- Укажите команду запуска для настоящего главного файла:
python bot.py
Если файл во вложенной папке, лучше перенести код в корень. Временное решение — указать путь:python src/bot.py. Но тогда относительные пути внутри бота будут считаться от корня. - Проверьте, что файл в git:
git ls-files | grep .py
Если его там нет —git add bot.py && git commit -m "add bot" && git push.
Как это устроено в botdepo
Поле «Команда запуска» можно оставить пустым. Тогда botdepo сам ищет в корне репозитория main.py, bot.py, app.py, run.py, а если .py файл ровно один, берёт его. Если главный файл называется иначе (например, 01bot.py) или файлов несколько, впишите команду руками: python 01bot.py. Файлы бота и requirements.txt должны лежать в корне репозитория. Задеплоить бота.
Частые вопросы
Почему путь начинается с /app?
Это папка внутри контейнера, куда копируется ваш репозиторий. /app/main.py — это main.py в корне репозитория.
У меня бот из нескольких файлов, какой указывать?
Тот, который вы запускаете у себя командой python …, — обычно в нём есть start_polling, run_polling или infinity_polling. Остальные файлы он импортирует сам.