我正在尝试向 Heroku 部署一个简单的呼叫和响应机器人,但我一直遇到同样的错误,我不知道如何修复它。我发现该程序可以在我的个人计算机上运行,但在我将其部署到 Heroku 时却不能运行。我觉得这与我的导入语句有关:
import random
from telegram.ext import Updater
from telegram.ext import CommandHandler
from telegram.ext import MessageHandler
from telegram.ext import Filters
from telegram.ext import messagequeue as mq
from telegram.utils.request import Request
import logging
import os
我在推送到 heroku 并运行它后收到这些错误:
2021-03-27T08:25:40.562359+00:00 heroku[web.1]: Starting process with command `python3 bog_bot.py`
2021-03-27T08:25:43.167956+00:00 heroku[web.1]: Process exited with status 1
2021-03-27T08:25:43.257029+00:00 heroku[web.1]: State changed from starting to crashed
2021-03-27T08:25:43.102105+00:00 app[web.1]: Traceback (most recent call last):
2021-03-27T08:25:43.102177+00:00 app[web.1]: File "/app/bog_bot.py", line 2, in <module>
2021-03-27T08:25:43.102489+00:00 app[web.1]: from telegram.ext import Updater
2021-03-27T08:25:43.102543+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/telegram/ext/__init__.py", line 21, in <module>
2021-03-27T08:25:43.102788+00:00 app[web.1]: from .basepersistence import BasePersistence
2021-03-27T08:25:43.102820+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/telegram/ext/basepersistence.py", line 25, in <module>
2021-03-27T08:25:43.103058+00:00 app[web.1]: from telegram import Bot
2021-03-27T08:25:43.103163+00:00 app[web.1]: ImportError: cannot import name 'Bot' from 'telegram' (/app/.heroku/python/lib/python3.9/site-packages/telegram/__init__.py)
我真的很感激任何帮助,因为我一直在寻找这个小问题的答案几个小时了。
答案 0 :(得分:1)
尝试删除
telegram==0.0.1
python-telegram-bot
模块使用命名空间 telegram
。因此,将两个模块一起安装可能会导致错误。要解决此问题,您需要卸载 telegram
模块。由于从 requirements.txt
中移除模块不会自动移除模块,因此您需要自行移除模块。见:
Manually remove Python package on Heroku
参考: https://github.com/python-telegram-bot/python-telegram-bot/issues/395
答案 1 :(得分:0)
所以我发现问题不是需求文件中的错误,而是pipfile中的错误。我从那里删除了一堆要求,效果更好。不过,我仍然包含了电报库,我认为可能是 pyTelegramBotAPI 库导致了我的问题。我还在不同的应用程序上重新启动了该项目,并对机器人的代码进行了一些更改。现在导入部分如下所示:
import random
from telegram import Update
from telegram.ext import Updater
from telegram.ext import CommandHandler
from telegram.ext import MessageHandler
from telegram.ext import Filters
from telegram.ext import messagequeue as mq
import telegram
from telegram.utils.request import Request
import logging
import os