he0119 / nonebot-plugin-wordcloud

适用于 NoneBot2 的词云插件
https://pypi.org/project/nonebot-plugin-wordcloud/
MIT License
77 stars 7 forks source link

Bug: TypeError: Connection.create_function() got an unexpected keyword argument 'deterministic' #287

Open JPZ4-5 opened 2 months ago

JPZ4-5 commented 2 months ago

wordcloud 版本

0.7.1

chatrecorder 版本

0.6.0

saa 版本

0.6.1

alconna 版本

0.42.5

描述问题

直接使用nb install下载此插件,并在运行后报TypeError: Connection.create_function() got an unexpected keyword argument 'deterministic'的错误。在尝试屏蔽掉所有其他插件,仅启用此插件时,无法正常初始化bot。

由于不清楚是否因DRIVER产生的问题,已经尝试过更换不同DRIVER组合,首页上的以及fastapi+aiohttp,报错trace不一样,但最终都是此TypeError的错误。

已经尝试过uninstall此插件再重装,未能解决。

是否还需要更多其他版本信息确定问题?

复现步骤

  1. nb plugin install nonebot-plugin-wordcloud
  2. python bot.py

期望的结果

期望能够正常使用此插件。非常感谢!

截图或日志

以下为DRIVER=~fastapi+~aiohttp的报错

S:\nonebot\baizi\.venv\Scripts\python.exe S:\nonebot\baizi\bot.py 
04-25 18:26:43 [SUCCESS] nonebot | NoneBot is initializing...
04-25 18:26:43 [INFO] nonebot | Current Env: prod
04-25 18:26:43 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_apscheduler"
04-25 18:26:43 [SUCCESS] nonebot | Succeeded to load plugin "uniseg" from "nonebot_plugin_alconna.uniseg"
04-25 18:26:43 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_alconna"
04-25 18:26:44 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_localstore"
04-25 18:26:44 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_orm"
04-25 18:26:44 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_session"
04-25 18:26:44 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_session_orm"
04-25 18:26:44 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_chatrecorder"
04-25 18:26:44 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_saa"
04-25 18:26:44 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_cesaa"
04-25 18:26:45 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_wordcloud"
04-25 18:26:45 [SUCCESS] nonebot | Running NoneBot...
04-25 18:26:45 [INFO] uvicorn | Started server process [16056]
04-25 18:26:45 [INFO] uvicorn | Waiting for application startup.
04-25 18:26:45 [INFO] nonebot_plugin_apscheduler | Scheduler Started
04-25 18:26:45 [ERROR] uvicorn | Traceback (most recent call last):
  File "S:\nonebot\baizi\.venv\lib\site-packages\starlette\routing.py", line 732, in lifespan
    async with self.lifespan_context(app) as maybe_state:
  File "S:\nonebot\lib\contextlib.py", line 199, in __aenter__
    return await anext(self.gen)
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot\drivers\fastapi.py", line 153, in _lifespan_manager
    await self._lifespan.startup()
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot\internal\driver\_lifespan.py", line 41, in startup
    await self._run_lifespan_func(self._startup_funcs)
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot\internal\driver\_lifespan.py", line 35, in _run_lifespan_func
    await cast(ASYNC_LIFESPAN_FUNC, func)()
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot_plugin_orm\__init__.py", line 84, in init_orm
    await greenlet_spawn(migrate.check, alembic_config)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot_plugin_orm\migrate.py", line 540, in check
    script.run_env()
  File "S:\nonebot\baizi\.venv\lib\site-packages\alembic\script\base.py", line 583, in run_env
    util.load_python_file(self.dir, "env.py")
  File "S:\nonebot\baizi\.venv\lib\site-packages\alembic\util\pyfiles.py", line 95, in load_python_file
    module = load_module_py(module_id, path)
  File "S:\nonebot\baizi\.venv\lib\site-packages\alembic\util\pyfiles.py", line 113, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot_plugin_orm\templates\generic\env.py", line 90, in <module>
    await_only(coro)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 131, in await_only
    return current.driver.switch(awaitable)  # type: ignore[no-any-return]
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot_plugin_orm\templates\generic\env.py", line 78, in run_migrations_online
    async with engine.connect() as connection:
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\ext\asyncio\base.py", line 121, in __aenter__
    return await self.start(is_ctxmanager=True)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\ext\asyncio\engine.py", line 273, in start
    await greenlet_spawn(self.sync_engine.connect)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 203, in greenlet_spawn
    result = context.switch(value)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\engine\base.py", line 3280, in connect
    return self._connection_cls(self)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\engine\base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\engine\base.py", line 3304, in raw_connection
    return self.pool.connect()
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 1263, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 712, in checkout
    rec = pool._do_get()
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\impl.py", line 308, in _do_get
    return self._create_connection()
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 390, in _create_connection
    return _ConnectionRecord(self)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 674, in __init__
    self.__connect()
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 914, in __connect
    )._exec_w_sync_on_first_run(self.dbapi_connection, self)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\event\attr.py", line 483, in _exec_w_sync_on_first_run
    self(*args, **kw)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\event\attr.py", line 497, in __call__
    fn(*args, **kw)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\engine\create.py", line 721, in on_connect
    do_on_connect(dbapi_connection)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\dialects\sqlite\pysqlite.py", line 577, in connect
    fn(conn)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\dialects\sqlite\pysqlite.py", line 560, in set_regexp
    dbapi_connection.create_function(
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 250, in create_function
    self._handle_exception(error)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 298, in _handle_exception
    raise error
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 248, in create_function
    self.await_(self._connection.create_function(*args, **kw))
TypeError: Connection.create_function() got an unexpected keyword argument 'deterministic'

04-25 18:26:45 [ERROR] uvicorn | Application startup failed. Exiting.

进程已结束,退出代码为 3

以下为DRIVER使用httpx时的报错

S:\nonebot\baizi\.venv\Scripts\python.exe S:\nonebot\baizi\bot.py 
04-25 18:34:56 [SUCCESS] nonebot | NoneBot is initializing...
04-25 18:34:56 [INFO] nonebot | Current Env: prod
04-25 18:34:56 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_apscheduler"
04-25 18:34:56 [SUCCESS] nonebot | Succeeded to load plugin "uniseg" from "nonebot_plugin_alconna.uniseg"
04-25 18:34:56 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_alconna"
04-25 18:34:57 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_localstore"
04-25 18:34:57 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_orm"
04-25 18:34:57 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_session"
04-25 18:34:57 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_session_orm"
04-25 18:34:57 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_chatrecorder"
04-25 18:34:57 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_saa"
04-25 18:34:57 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_cesaa"
04-25 18:34:58 [SUCCESS] nonebot | Succeeded to load plugin "nonebot_plugin_wordcloud"
04-25 18:34:58 [SUCCESS] nonebot | Running NoneBot...
04-25 18:34:58 [INFO] nonebot_plugin_apscheduler | Scheduler Started
04-25 18:34:58 [ERROR] nonebot | Error when running startup function. Ignored!
Traceback (most recent call last):
  File "S:\nonebot\baizi\bot.py", line 43, in <module>
    nonebot.run()
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot\__init__.py", line 334, in run
    get_driver().run(*args, **kwargs)
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot\drivers\none.py", line 56, in run
    loop.run_until_complete(self._serve())
  File "S:\nonebot\lib\asyncio\base_events.py", line 636, in run_until_complete
    self.run_forever()
  File "S:\nonebot\lib\asyncio\windows_events.py", line 321, in run_forever
    super().run_forever()
  File "S:\nonebot\lib\asyncio\base_events.py", line 603, in run_forever
    self._run_once()
  File "S:\nonebot\lib\asyncio\base_events.py", line 1909, in _run_once
    handle._run()
  File "S:\nonebot\lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot\drivers\none.py", line 60, in _serve
    await self._startup()
> File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot\drivers\none.py", line 68, in _startup
    await self._lifespan.startup()
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot\internal\driver\_lifespan.py", line 41, in startup
    await self._run_lifespan_func(self._startup_funcs)
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot\internal\driver\_lifespan.py", line 35, in _run_lifespan_func
    await cast(ASYNC_LIFESPAN_FUNC, func)()
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot_plugin_orm\__init__.py", line 84, in init_orm
    await greenlet_spawn(migrate.check, alembic_config)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot_plugin_orm\migrate.py", line 540, in check
    script.run_env()
  File "S:\nonebot\baizi\.venv\lib\site-packages\alembic\script\base.py", line 583, in run_env
    util.load_python_file(self.dir, "env.py")
  File "S:\nonebot\baizi\.venv\lib\site-packages\alembic\util\pyfiles.py", line 95, in load_python_file
    module = load_module_py(module_id, path)
  File "S:\nonebot\baizi\.venv\lib\site-packages\alembic\util\pyfiles.py", line 113, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot_plugin_orm\templates\generic\env.py", line 90, in <module>
    await_only(coro)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 131, in await_only
    return current.driver.switch(awaitable)  # type: ignore[no-any-return]
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
  File "S:\nonebot\baizi\.venv\lib\site-packages\nonebot_plugin_orm\templates\generic\env.py", line 78, in run_migrations_online
    async with engine.connect() as connection:
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\ext\asyncio\base.py", line 121, in __aenter__
    return await self.start(is_ctxmanager=True)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\ext\asyncio\engine.py", line 273, in start
    await greenlet_spawn(self.sync_engine.connect)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 203, in greenlet_spawn
    result = context.switch(value)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\engine\base.py", line 3280, in connect
    return self._connection_cls(self)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\engine\base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\engine\base.py", line 3304, in raw_connection
    return self.pool.connect()
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 1263, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 712, in checkout
    rec = pool._do_get()
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\impl.py", line 308, in _do_get
    return self._create_connection()
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 390, in _create_connection
    return _ConnectionRecord(self)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 674, in __init__
    self.__connect()
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\pool\base.py", line 914, in __connect
    )._exec_w_sync_on_first_run(self.dbapi_connection, self)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\event\attr.py", line 483, in _exec_w_sync_on_first_run
    self(*args, **kw)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\event\attr.py", line 497, in __call__
    fn(*args, **kw)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\engine\create.py", line 721, in on_connect
    do_on_connect(dbapi_connection)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\dialects\sqlite\pysqlite.py", line 577, in connect
    fn(conn)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\dialects\sqlite\pysqlite.py", line 560, in set_regexp
    dbapi_connection.create_function(
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 250, in create_function
    self._handle_exception(error)
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 298, in _handle_exception
    raise error
  File "S:\nonebot\baizi\.venv\lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 248, in create_function
    self.await_(self._connection.create_function(*args, **kw))
TypeError: Connection.create_function() got an unexpected keyword argument 'deterministic'
04-25 18:34:58 [INFO] nonebot | Application startup completed.
ProgramRipper commented 2 months ago

请提供下你的 Python 版本,确认一下是不是 3.8+。

JPZ4-5 commented 2 months ago

请提供下你的 Python 版本,确认一下是不是 3.8+。

你好!是3.10.14

ProgramRipper commented 2 months ago

我初步认定可能是你的 SQLite 版本过低导致的,请你运行以下脚本获取你的 SQLite 版本:

from sqlite3 import dbapi2
print(dbapi2.sqlite_version)

可能相关的上游 issue:sqlalchemy/sqlalchemy#9430

JPZ4-5 commented 2 months ago

你好!print(dbapi2.sqlite_version)的结果是3.45.3,此外看了下SQLAlchemy的版本为2.0.29,似乎是超过 https://github.com/sqlalchemy/sqlalchemy/issues/9430所提到的要求?

我需要重装SQLAlchemy的某个降级版本吗?