Telethon TelegramClient启动触发退出代码-1073741819(0xC0000005)咨询
问题描述
使用PyCharm 2023.2.5 + Python 3.11.1运行如下代码:
from telethon import TelegramClient, sync, events class telegram_messenger: def __init__(self): api_id = '123' api_hash = 'ABC' bot_token = 'ZZZ' client = TelegramClient('bot', api_id, api_hash).start(bot_token=bot_token)
程序崩溃,返回错误码:Process finished with exit code -1073741819 (0xC0000005);但注释掉client = ...这行后,程序可正常运行。
原因分析
这个错误码是Windows系统的内存访问违规错误,结合Telethon的使用场景,主要原因有这几个:
- 依赖版本不兼容:Python 3.11属于较新的版本,旧版Telethon或其依赖库(比如cryptography)对3.11的支持不完善,初始化客户端时触发内存异常。
- 会话文件问题:当前目录下的
bot.session会话文件损坏、无读写权限,导致客户端初始化时读取/写入文件出错。 - 同步模式冲突:在类的构造方法里直接用同步方式启动客户端,和PyCharm的运行环境存在线程/内存调度冲突。
解决方案
升级Telethon到兼容版本
执行命令更新Telethon,确保它支持Python 3.11:pip install --upgrade telethon重置会话文件
删除当前项目目录下的bot.session文件,重新运行程序,让Telethon生成新的会话文件;同时确认PyCharm拥有当前目录的读写权限。改用异步模式启动客户端
同步模式在某些环境下容易出问题,换成异步写法测试:from telethon import TelegramClient, events import asyncio class telegram_messenger: def __init__(self): self.api_id = '123' self.api_hash = 'ABC' self.bot_token = 'ZZZ' asyncio.run(self.start_client()) async def start_client(self): self.client = TelegramClient('bot', self.api_id, self.api_hash) await self.client.start(bot_token=self.bot_token) print("客户端启动成功") if __name__ == "__main__": tm = telegram_messenger()检查Python环境
若以上方法无效,尝试创建全新的虚拟环境,重新安装Telethon及依赖,避免全局环境的库冲突;同时确认Python 3.11的安装包没有损坏。
内容的提问来源于stack exchange,提问作者starsnpixel
相关产品推荐
相关产品推荐

