![](/img/trans.png)
[英]ImportError: cannot import name 'Bot' from partially initialized module 'telegram'
[英]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
中刪除模塊不會自動刪除該模塊,因此您需要自己刪除該模塊。 看:
參考: 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
庫。
如果還有teleram
或python-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 telegram
, pip 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.