python3.7环境下sanic-ext未生效踩坑解析

 更新时间:2023年01月30日 14:11:26   作者:lvzi  
这篇文章主要为大家介绍了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未生效的资料请关注脚本之家其它相关文章!

相关文章

  • Python实现脚本转换为命令行程序

    Python实现脚本转换为命令行程序

    使用Python中的scaffold和click库,你可以将一个简单的实用程序升级为一个成熟的命令行界面工具,本文就来带你看看具体实现方法,感兴趣的可以了解下
    2022-09-09
  • Python3 集合set入门基础

    Python3 集合set入门基础

    集合也也也也是python内置的一种数据结构,它是一个无序且元素不重复的序列。这里有两个关键词一个是无序,这一点和字典是一样的,另一个关键词是元素不重复,这一点和字典的key(键)是一样的
    2020-02-02
  • Python 包含汉字的文件读写之每行末尾加上特定字符

    Python 包含汉字的文件读写之每行末尾加上特定字符

    这篇文章主要介绍了Python 包含汉字的文件读写之每行末尾加上特定字符的相关资料,需非常不错,具有参考借鉴价值,要的朋友可以参考下
    2016-12-12
  • Python标准库之typing的用法(类型标注)

    Python标准库之typing的用法(类型标注)

    这篇文章主要介绍了Python标准库之typing的用法(类型标注),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 如何使用Python多线程测试并发漏洞

    如何使用Python多线程测试并发漏洞

    这篇文章主要介绍了如何使用Python多线程测试并发漏洞,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python判断一个三位数是否为水仙花数的示例

    Python判断一个三位数是否为水仙花数的示例

    今天小编就为大家分享一篇Python判断一个三位数是否为水仙花数的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • PyQt4实时显示文本内容GUI的示例

    PyQt4实时显示文本内容GUI的示例

    今天小编就为大家分享一篇PyQt4实时显示文本内容GUI的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 一文搞懂Python中的进程,线程和协程

    一文搞懂Python中的进程,线程和协程

    并发编程是实现多任务协同处理,改善系统性能的方式。Python中实现并发编程主要依靠进程、线程和协程,本文将通过示例详解三者的区别,感兴趣的可以了解一下
    2022-05-05
  • pycharm导入第三方库的两种方法(永不报错)

    pycharm导入第三方库的两种方法(永不报错)

    这篇文章主要介绍了pycharm导入第三方库的两种方法(永不报错),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • pytorch模型保存与加载中的一些问题实战记录

    pytorch模型保存与加载中的一些问题实战记录

    一般来说,保存模型是把参数全部用model.cpu().state_dict(),然后加载模型时一般用model.load_state_dict(torch.load(model_path)),下面这篇文章主要给大家介绍了关于pytorch模型保存与加载中的一些问题实战记录,需要的朋友可以参考下
    2022-10-10

最新评论