create_task = asyncio.async:SyntaxError:语法无效

O T*_*ado 16 discord discord.py

我正在为Discord创建一个机器人,我刚写了这个简单的代码:

import discord

TOKEN = "token"

client = discord.Client()


@client.event
async def on_ready():
    print('Bot is ready.')


client.run(TOKEN)
Run Code Online (Sandbox Code Playgroud)

它会产生以下错误:

Traceback (most recent call last):
  File "/Users/pcaires/Desktop/Programação/Python/Discord Bots/Main.py", line 1, in <module>
    import discord
  File "/Users/pcaires/Desktop/Programac?a?o/Python/Discord Bots/venv/lib/python3.7/site-packages/discord/__init__.py", line 20, in <module>
    from .client import Client, AppInfo, ChannelPermissions
  File "/Users/pcaires/Desktop/Programac?a?o/Python/Discord Bots/venv/lib/python3.7/site-packages/discord/client.py", line 38, in <module>
    from .state import ConnectionState
  File "/Users/pcaires/Desktop/Programac?a?o/Python/Discord Bots/venv/lib/python3.7/site-packages/discord/state.py", line 36, in <module>
    from . import utils, compat
  File "/Users/pcaires/Desktop/Programac?a?o/Python/Discord Bots/venv/lib/python3.7/site-packages/discord/compat.py", line 32
    create_task = asyncio.async
                              ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我在互联网上搜索和搜索,大多数人都说使用Python 3.7,这就是我一直在使用的东西.另外,我一直在使用PyCharm作为我的Python IDE.

cmo*_*set 20

错误来自哪里?

您正在使用的discord.py版本不支持Python 3.7(其中async成为保留关键字),如本期中所述.这个版本的discord.py是GitHub仓库的默认分支,遗憾的是由Pip安装的版本.

如何解决它

你可以:

  • 将您的Python版本降级到3.6.
  • 安装另一个版本的discord.py,基于正在进行开发重写分支 ,例如使用以下命令:python3 -m pip install --user -U https://github.com/Rapptz/discord.py/archive/rewrite.zip


小智 8

您可以手动编辑文件并将该行从更改create_task = asyncio.asynccreate_task = getattr(asyncio, 'async')

在此处查看更多信息:https : //github.com/Rapptz/discord.py/issues/1249

  • 这不是一个好建议(实际上是一个糟糕的建议)。首先,您不应该手动更改站点包源文件,它会使您的代码依赖于更改后的需求包。其次,`asyncio.async`以前是不推荐使用的版本,因此,如果您要推荐一个修复程序,请将其更改为不推荐使用的版本。第三,显然有更好的解决方案选择,请参阅Patrick的评论(此问题有一个半官方的补丁-尽管该补丁就像您的评论,但我认为这不会传递给正式版本,请参见前两点)。 (4认同)
  • 我认为该链接中更相关的建议是更新到与 python 3.7 兼容的较新版本的“discord.py” (2认同)