簡體   English   中英

ImportError:無法從“電報”導入名稱“Bot”

[英]ImportError: cannot import name 'Bot' from 'telegram'

我正在嘗試將一個簡單的呼叫和響應機器人部署到 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)

我非常感謝任何幫助,因為我已經為這個小問題尋找了幾個小時的答案。

嘗試刪除

telegram==0.0.1 

更新

python-telegram-bot模塊使用命名空間telegram 因此可能會導致同時安裝兩個模塊時出錯。 要解決這個問題,您需要卸載telegram模塊。 由於從requirements.txt中刪除模塊不會自動刪除該模塊,因此您需要自己刪除該模塊。 看:

手動刪除 Heroku 上的 Python package

參考: https://github.com/python-telegram-bot/python-telegram-bot/issues/395

所以我發現問題不是需求文件中的錯誤,而是 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

確保您的 Pipfile 和 requirements.txt 都只有python-telegram-bot庫。

如果還有telerampython-telegram等其他相關庫,就會出現這種錯誤。

例如: ImportError: cannot import name 'Animation' from 'telegram' ( /app/.heroku/python/lib/python3.9/site-packages/telegram/init .py)

這個解決了這個問題:

https://github.com/mkdryden/telegram-stats-bot/issues/9

我們只需要 package python-telegram-bot而不是telegram==0.0.1

您應該嘗試pip uninstall telegrampip uninstall python-telegram-bot

並重新安裝python-telegram-bot

這將是您的 requirements.txt 文件

APScheduler==3.6.3
cachetools==4.2.2
certifi==2022.6.15
python-telegram-bot==13.13
pytz==2022.1
pytz-deprecation-shim==0.1.0.post0
six==1.16.0
tornado==6.2
tzdata==2022.1
tzlocal==4.2

它不應包含: telegram==0.0.1然后, pip freeze > requirements.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM