我有一个使用 python-telegram-bot 编写的电报机器人,工作正常,但几周后,当我启动脚本时,它似乎找不到一些库和模块。
举个例子,“更新”在我的代码中被广泛使用,并且运行得很好。但现在python找不到了。
这是我的一些进口。
from telegram import Update, ForceReply, InlineQueryResultArticle, InputTextMessageContent, ReplyKeyboardRemove, InlineKeyboardButton, InlineKeyboardMarkup, Update, User, ReplyKeyboardMarkup, Contact, Message, KeyboardButton
这是错误。
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
NameError: name 'Update' is not defined
有谁知道解决办法吗?
我尝试迁移到新环境,使用 --pre 或 --upgrade 开关重新安装 python-telegram-bot,清除 python 缓存并重新加载 VS Code ssh 窗口。
我认为没有一种好的方法可以将环境转移到生产环境(如果我错了,请纠正我),但是,您可以使用与您的环境中安装的完全相同的软件包来构建新环境:
pip freeze > requirements.txt
这会将您在开发环境中使用的每个包保存在文件中。 然后,您可以在 docker 文件中使用此文件来构建与开发机器人完全相同的依赖项,使用:
pip install -r requirements.txt
我发现建议重新安装依赖项,它对我有用。 (尽管 PyCharm IDE 仍然显示“无法找到参考”,但机器人开始正常工作):
pip uninstall python-telegram-bot
pip install python-telegram-bot
不要这样做
pip install telegram
仅安装 python-telegram-bot 库,
现在让我们创建一个新环境并重试:
$ deactivate # check if you've active environment
$ python -m venv newenv
$.\newenv\Scripts\activate # for windows
$ source newenv/bin/activate # for mac or linux
然后安装库:
$ pip install python-telegram-bot -U
现在尝试运行你的机器人:
$ python main.py