解决sqlacodegen2.3.0.post1在python3.11下使用报错
错误提示
Traceback (most recent call last):
File "/home/duzhuo/src/scraper-test/.venv/bin/sqlacodegen", line 5, in <module>
from sqlacodegen.main import main
File "/home/duzhuo/src/scraper-test/.venv/lib/python3.11/site-packages/sqlacodegen/main.py", line 11, in <module>
from sqlacodegen.codegen import CodeGenerator
File "/home/duzhuo/src/scraper-test/.venv/lib/python3.11/site-packages/sqlacodegen/codegen.py", line 9, in <module>
from inspect import ArgSpec
ImportError: cannot import name 'ArgSpec' from 'inspect' (/usr/lib/python3.11/inspect.py)
来自GPT的错误分析:您遇到的错误消息是由于 inspect.ArgSpec
类在 Python 3.11 中被移除了。ArgSpec
类在 Python 3.5 中已被弃用,并在 Python 3.11 中被移除。
当前使用的sqlacodegen版本为2.3.0.post1。是pypi上面的默认release版本。
解决方法
编辑 .venv/lib/python3.11/site-packages/sqlacodegen/codegen.py
找到from inspect import ArgSpec
替换成from inspect import FullArgSpec as ArgSpec
或者升级sqlacodegen版本到3.0.0 rc3以上。来源:https://github.com/agronholm/sqlacodegen/issues/239#issuecomment-1871370700