wechaty / python-wechaty

Python Wechaty is a Conversational RPA SDK for Chatbot Makers written in Python
https://wechaty.readthedocs.io/zh_CN/latest/
Apache License 2.0
1.55k stars 229 forks source link

[Bug]: ImportError: cannot import name 'RouteCallable' from 'quart.typing' #393

Open auroraslot opened 1 year ago

auroraslot commented 1 year ago

Environment

- wechaty:
- wechaty-puppet: 
- wechaty-puppet-service: 
- wechaty-plugin-contrib: 
- token type: padlocal|wxwork|xp
- the version of wechaty docker container: [0.65]

Description

python3 -m pip install wechaty

irony@ironydeMBP moss % python3 -m pip install wechaty       
Defaulting to user installation because normal site-packages is not writeable
Collecting wechaty
  Using cached wechaty-0.10.7-py3-none-any.whl (1.6 MB)
Requirement already satisfied: pyee in /Users/irony/.local/lib/python3.9/site-packages (from wechaty) (9.0.4)
Requirement already satisfied: requests in /Users/irony/.local/lib/python3.9/site-packages (from wechaty) (2.28.2)
Requirement already satisfied: qrcode in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from wechaty) (7.4.2)
Requirement already satisfied: lxml in /Users/irony/.local/lib/python3.9/site-packages (from wechaty) (4.9.2)
Requirement already satisfied: wechaty-puppet>=0.4.19 in /Users/irony/.local/lib/python3.9/site-packages (from wechaty) (0.4.23)
Requirement already satisfied: wechaty-puppet-service>=0.8.9 in /Users/irony/.local/lib/python3.9/site-packages (from wechaty) (0.8.10)
Requirement already satisfied: quart in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from wechaty) (0.17.0)
Requirement already satisfied: opengraph-py3 in /Users/irony/.local/lib/python3.9/site-packages (from wechaty) (0.71)
Collecting Quart-CORS (from wechaty)
  Using cached quart_cors-0.6.0-py3-none-any.whl (8.2 kB)
Requirement already satisfied: APScheduler in /Users/irony/.local/lib/python3.9/site-packages (from wechaty) (3.10.1)
Requirement already satisfied: SQLAlchemy in /Users/irony/.local/lib/python3.9/site-packages (from wechaty) (2.0.10)
Requirement already satisfied: PyGithub in /Users/irony/.local/lib/python3.9/site-packages (from wechaty) (1.58.1)
Requirement already satisfied: wechaty-grpc~=0.20.19 in /Users/irony/.local/lib/python3.9/site-packages (from wechaty-puppet-service>=0.8.9->wechaty) (0.20.19)
Requirement already satisfied: ping3 in /Users/irony/.local/lib/python3.9/site-packages (from wechaty-puppet-service>=0.8.9->wechaty) (4.0.4)
Requirement already satisfied: setuptools>=0.7 in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from APScheduler->wechaty) (57.4.0)
Requirement already satisfied: six>=1.4.0 in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from APScheduler->wechaty) (1.16.0)
Requirement already satisfied: pytz in /Users/irony/.local/lib/python3.9/site-packages (from APScheduler->wechaty) (2023.3)
Requirement already satisfied: tzlocal!=3.*,>=2.0 in /Users/irony/.local/lib/python3.9/site-packages (from APScheduler->wechaty) (4.3)
Requirement already satisfied: beautifulsoup4 in /Users/irony/.local/lib/python3.9/site-packages (from opengraph-py3->wechaty) (4.12.2)
Requirement already satisfied: typing-extensions in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from pyee->wechaty) (4.5.0)
Requirement already satisfied: deprecated in /Users/irony/.local/lib/python3.9/site-packages (from PyGithub->wechaty) (1.2.13)
Requirement already satisfied: pyjwt[crypto]>=2.4.0 in /Users/irony/.local/lib/python3.9/site-packages (from PyGithub->wechaty) (2.6.0)
Requirement already satisfied: pynacl>=1.4.0 in /Users/irony/.local/lib/python3.9/site-packages (from PyGithub->wechaty) (1.5.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /Users/irony/.local/lib/python3.9/site-packages (from requests->wechaty) (3.1.0)
Requirement already satisfied: idna<4,>=2.5 in /Users/irony/.local/lib/python3.9/site-packages (from requests->wechaty) (3.4)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/irony/.local/lib/python3.9/site-packages (from requests->wechaty) (1.26.15)
Requirement already satisfied: certifi>=2017.4.17 in /Users/irony/.local/lib/python3.9/site-packages (from requests->wechaty) (2022.12.7)
Requirement already satisfied: pypng in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from qrcode->wechaty) (0.20220715.0)
Requirement already satisfied: aiofiles in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from quart->wechaty) (23.1.0)
Requirement already satisfied: blinker in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from quart->wechaty) (1.5)
Requirement already satisfied: click in /Users/irony/.local/lib/python3.9/site-packages (from quart->wechaty) (8.1.3)
Requirement already satisfied: hypercorn>=0.11.2 in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from quart->wechaty) (0.14.3)
Requirement already satisfied: itsdangerous in /Users/irony/.local/lib/python3.9/site-packages (from quart->wechaty) (2.1.2)
Requirement already satisfied: jinja2 in /Users/irony/.local/lib/python3.9/site-packages (from quart->wechaty) (3.1.2)
Requirement already satisfied: markupsafe in /Users/irony/.local/lib/python3.9/site-packages (from quart->wechaty) (2.1.2)
Requirement already satisfied: toml in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from quart->wechaty) (0.10.2)
Requirement already satisfied: werkzeug>=2.0.0 in /Users/irony/.local/lib/python3.9/site-packages (from quart->wechaty) (2.2.3)
Requirement already satisfied: h11 in /Users/irony/.local/lib/python3.9/site-packages (from hypercorn>=0.11.2->quart->wechaty) (0.14.0)
Requirement already satisfied: h2>=3.1.0 in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from hypercorn>=0.11.2->quart->wechaty) (4.1.0)
Requirement already satisfied: priority in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from hypercorn>=0.11.2->quart->wechaty) (2.0.0)
Requirement already satisfied: wsproto>=0.14.0 in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from hypercorn>=0.11.2->quart->wechaty) (1.2.0)
Requirement already satisfied: cryptography>=3.4.0 in /Users/irony/.local/lib/python3.9/site-packages (from pyjwt[crypto]>=2.4.0->PyGithub->wechaty) (40.0.2)
Requirement already satisfied: cffi>=1.4.1 in /Users/irony/.local/lib/python3.9/site-packages (from pynacl>=1.4.0->PyGithub->wechaty) (1.15.1)
Requirement already satisfied: pytz-deprecation-shim in /Users/irony/.local/lib/python3.9/site-packages (from tzlocal!=3.*,>=2.0->APScheduler->wechaty) (0.1.0.post0)
Requirement already satisfied: betterproto in /Users/irony/.local/lib/python3.9/site-packages (from wechaty-grpc~=0.20.19->wechaty-puppet-service>=0.8.9->wechaty) (1.2.5)
Requirement already satisfied: grpclib in /Users/irony/.local/lib/python3.9/site-packages (from wechaty-grpc~=0.20.19->wechaty-puppet-service>=0.8.9->wechaty) (0.4.3)
Requirement already satisfied: soupsieve>1.2 in /Users/irony/.local/lib/python3.9/site-packages (from beautifulsoup4->opengraph-py3->wechaty) (2.4.1)
Requirement already satisfied: wrapt<2,>=1.10 in /Users/irony/.local/lib/python3.9/site-packages (from deprecated->PyGithub->wechaty) (1.15.0)
Requirement already satisfied: pycparser in /Users/irony/.local/lib/python3.9/site-packages (from cffi>=1.4.1->pynacl>=1.4.0->PyGithub->wechaty) (2.21)
Requirement already satisfied: hyperframe<7,>=6.0 in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from h2>=3.1.0->hypercorn>=0.11.2->quart->wechaty) (6.0.1)
Requirement already satisfied: hpack<5,>=4.0 in /Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages (from h2>=3.1.0->hypercorn>=0.11.2->quart->wechaty) (4.0.0)
Requirement already satisfied: stringcase in /Users/irony/.local/lib/python3.9/site-packages (from betterproto->wechaty-grpc~=0.20.19->wechaty-puppet-service>=0.8.9->wechaty) (1.2.0)
Requirement already satisfied: multidict in /Users/irony/.local/lib/python3.9/site-packages (from grpclib->wechaty-grpc~=0.20.19->wechaty-puppet-service>=0.8.9->wechaty) (6.0.4)
Requirement already satisfied: tzdata in /Users/irony/.local/lib/python3.9/site-packages (from pytz-deprecation-shim->tzlocal!=3.*,>=2.0->APScheduler->wechaty) (2023.3)
Installing collected packages: Quart-CORS, wechaty
Successfully installed Quart-CORS-0.6.0 wechaty-0.10.7

运行Python脚本报错

Python脚本:
import asyncio
from typing import Union

from wechaty import Wechaty, Message, Room, Contact
from wechaty_puppet import FileBox

class MyBot(Wechaty):
    async def on_message(self, msg: Message):
        from_contact = msg.talker()
        text = msg.text()
        room = msg.room()
        if text == 'ding':
            conversation: Union[
                Room, Contact] = from_contact if room is None else room
            await conversation.ready()
            await conversation.say('dong')
            file_box = FileBox.from_url(
                'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/'
                'u=1116676390,2305043183&fm=26&gp=0.jpg',
                name='ding-dong.jpg')
            await conversation.say(file_box)

asyncio.run(MyBot().start())

报错日志:

Minimum reproducible code

/Users/irony/.pyenv/shims/python /Users/irony/pythonProjects/moss/client/wechat/my_bot.py Traceback (most recent call last): File "/Users/irony/pythonProjects/moss/client/wechat/my_bot.py", line 4, in from wechaty import Wechaty, Message, Room, Contact File "/Users/irony/.local/lib/python3.9/site-packages/wechaty/init.py", line 49, in from .plugin import ( File "/Users/irony/.local/lib/python3.9/site-packages/wechaty/plugin.py", line 55, in from quart_cors import cors File "/Users/irony/.local/lib/python3.9/site-packages/quart_cors/init.py", line 16, in from quart.typing import RouteCallable, WebsocketCallable ImportError: cannot import name 'RouteCallable' from 'quart.typing' (/Users/irony/.pyenv/versions/3.9.7/lib/python3.9/site-packages/quart/typing.py)

RedhairHambagu commented 2 months ago

遇到了类似问题。quart版本问题更新就好了