给网友朋友们带来一篇相关的编程文章,网友益妍雅根据主题投稿了本篇教程内容,涉及到python3.7环境sanic-ext未生效、python3.7、sanic-ext、python3.7环境sanic-ext未生效相关内容,已被748网友关注,涉猎到的知识点内容可以在下方电子书获得。
python3.7环境sanic-ext未生效
坑:
在python3.7环境下,通过官方文档安装sanic即扩展插件,但是 sanic-ext
包不起作用,具体的表现为:无法打开路由/docs
。
这里的坑在于,服务启动时,sanic不会报错。因此很难定位出问题在sanic-ext。
原因:
寻找sanic-ext不起作用的原因:
首先在虚拟环境中执行import sanic_ext
结果报错,提示缺少importlib.metadata
查询当前环境下importlib.metadata
的版本,发现在python3.7下importlib.metadata=4.2
由于本人曾在python3.8环境可以正常使用sanic-ext
,所以进入python3.8环境下检查发现importlib.metadata=3.10.0
结论:
python3.7下的importlib.metadata
版本与sanic-ext不匹配,导致其无法起作用
回过头看:
虽然sanic-ext
不会报错,但其实sanic-ext
是否生效是有迹可循的,在sanic启动时,会有一串打印信息,可以通过打印信息中的packages
中是否包含sanic-ext
判断sanic-ext
是否正确生效。
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Sanic v22.9.0 │ │ Goin' Fast @ http://0.0.0.0:12345 │ ├───────────────────────┬─────────────────────────────────────────────────────────────────────────────────┤ │ │ mode: debug, single worker │ │ ▄███ █████ ██ │ server: sanic, HTTP/1.1 │ │ ██ │ python: 3.8.8 │ │ ▀███████ ███▄ │ platform: Linux-4.15.0-189-generic-x86_64-with-glibc2.10 │ │ ██ │ auto-reload: enabled, /xx/xx/xx │ │ ████ ████████▀ │ packages: sanic-routing==22.8.0, sanic-ext==22.9.0 │ │ │ │ │ Build Fast. Run Fast. │ │
后记
python3.7的importlib.metadata
高于python3.8的,不符合直觉,可能是装其他东西更新了这个包,所以也许不是python3.7与sanic-ext
不适配,这点有待继续验证,更多关于python3.7环境sanic-ext未生效的资料请关注码农之家其它相关文章!