You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入Pyrogram时提示主线程无当前事件循环的问题求助

Pyrogram导入触发RuntimeError的解决办法

执行import pyrogram时直接抛出RuntimeError,报错详情如下:

Traceback (most recent call last):
  File "c:\Users\User\Desktop\python\bots\SVG\bott copy.py", line 1, in <module>
    from pyrogram import Client, filters, methods
  File "c:\Users\User\AppData\Local\Programs\Python\Python314\Lib\site-packages\pyrogram\__init__.py", line 40, in <module>
    from .sync import idle, compose
  File "c:\Users\User\AppData\Local\Programs\Python\Python314\Lib\site-packages\pyrogram\sync.py", line 99, in <module>
    wrap(Methods)
    ~~~~^^^^^^^^^
  File "c:\Users\User\AppData\Local\Programs\Python\Python314\Lib\site-packages\pyrogram\sync.py", line 95, in wrap
 async_to_sync(source, name)
 ~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "c:\Users\User\AppData\Local\Programs\Python\Python314\Lib\site-packages\pyrogram\sync.py", line 31, in async_to_sync
    main_loop = asyncio.get_event_loop()
  File "c:\Users\User\AppData\Local\Programs\Python\Python314\Lib\asyncio\events.py", line 715, in get_event_loop
    raise RuntimeError('There is no current event loop in thread %r.'
                       % threading.current_thread().name)
RuntimeError: There is no current event loop in thread 'MainThread'.

当前环境信息:

  • Python版本:3.14
  • Pyrogram版本:2.0.106(已确认是最新版,通过pip install pyrogram安装)
  • 完整依赖列表:
bcrypt==4.3.0  
beautifulsoup4==4.14.2  
cachebox==5.0.4  
certifi==2025.10.5  
cffi==2.0.0  
charset-normalizer==3.4.4  
cryptography==38.0.4  
idna==3.11  
lxml==6.0.2  
pyaes==1.6.1  
pycparser==2.23  
Pyrogram==2.0.106  
pyrostep==2.11.22  
PySocks==1.7.1  
pyTelegramBotAPI==4.29.1

问题原因

Python 3.14修改了asyncio的默认行为,主线程不再自动创建事件循环,而Pyrogram的sync模块在导入阶段会尝试调用asyncio.get_event_loop()获取当前循环,导致报错。

解决办法

1. 手动创建事件循环后再导入

在导入Pyrogram前先手动创建并设置事件循环:

import asyncio
asyncio.set_event_loop(asyncio.new_event_loop())
import pyrogram

2. 用异步上下文管理导入(推荐用于异步代码场景)

把导入逻辑放到异步函数中,通过asyncio.run()启动:

import asyncio

async def main():
    from pyrogram import Client, filters
    # 这里写你的Pyrogram业务代码

if __name__ == "__main__":
    asyncio.run(main())

3. 降级Python版本

如果不想修改代码,可以把Python版本降到3.13及以下,这个版本中asyncio会自动为主线程创建事件循环,适配当前版本的Pyrogram。

内容的提问来源于stack exchange,提问作者МегаПон

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 04:02:46