asyncio 导入问题 - 没有属性 'StreamReader'

asyncio import issues - no attribute 'StreamReader'

我已经让 asyncio 和 websockets 工作好几次了,但出于某种原因它有时会拒绝 运行 并且会再次拒绝 运行。我在多个设备上都遇到过这种情况,代码就像导入一样简单:

import asyncio
import json
import websockets

有趣的是,在 Android 上使用 Pydroid3 时,我用 asyncio 编写的任何代码都可以正常工作,但只有在我将其保存到文件之前。一旦保存,它就会停止工作。我可以复制所有文本并将其粘贴到一个新的、未保存的文件中,它在保存之前再次正常工作。不幸的是,这个糟糕的解决方案不适用于 Windows。我正在为 Windows 使用 Python 3.9.0。 运行 上面显示的代码生成的堆栈跟踪如下:

Traceback (most recent call last):
  File "C:\Users\user\Documents\AtomTests\socket.py", line 1, in <module>
    import asyncio
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\asyncio\__init__.py", line 8, in <module>
    from .base_events import *
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 23, in <module>
    import socket
  File "C:\Users\user\Documents\AtomTests\socket.py", line 3, in <module>
    import websockets
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\websockets\__init__.py", line 3, in <module>
    from .auth import *  # noqa
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\websockets\auth.py", line 12, in <module>
    from .exceptions import InvalidHeader
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\websockets\exceptions.py", line 33, in <module>
    from .http import Headers, HeadersLike
  File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\websockets\http.py", line 70, in <module>
    async def read_request(stream: asyncio.StreamReader) -> Tuple[str, "Headers"]:
AttributeError: partially initialized module 'asyncio' has no attribute 'StreamReader' (most likely due to a circular import)
[Finished in 0.158s]

我搜索了一下这个错误,但要么它不常见,要么我只是瞎了眼,因为我找不到任何东西。还有其他人遇到过这种情况吗?

您的本地 socket.py 文件正在隐藏 Python 的 socket 模块。重命名您的文件,您的导入将起作用。