开发者

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启动时,会有javascript一串打印信息,可以通过打印信息中的开发者_JS开发packages中是否包含sanic-ext判断sanic-ext是否正确生效。

      ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────┐
      │                                              Sanic v22.9.0                                              │
      │                                    Goin' Fast @ http://编程客栈0.0.0.0:12345                                    │
      ├───────────────────────┬───────────────────────────────────python─────────http://www.devze.com─────────────────────────────────────┤
      │                       │        mode: debug, single worker                                               │
      │     ▄███ █████ ██     │      server: sanic, HTTP/1.1                                                    │
      │    ██                 │      python: 3.8.8                                                              │
      │     ▀███████ ███▄     │    platform: linux-4.15.0-189-generic-x86_64-with-glibchttp://www.devze.com2.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未生效的资料请关注我们其它相关文章!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜