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未生效的资料请关注我们其它相关文章!

(0)

相关推荐

  • python异步Web框架sanic的实现

    我们继续学习Python异步编程,这里将介绍异步Web框架sanic,为什么不是tornado?从框架的易用性来说,Flask要远远比tornado简单,可惜flask不支持异步,而sanic就是类似Flask语法的异步框架. github:https://github.com/huge-success/sanic 不过sanic对环境有要求: macOS/linux python 3.6+ 不过,我在macOS上安装 sanic 还是踩了坑.依赖库ujson一直安装失败.最后不得不卸载官方py

  • Sanic框架基于类的视图用法示例

    本文实例讲述了Sanic框架基于类的视图用法.分享给大家供大家参考,具体如下: 简介 基于类的视图只是实现对请求响应行为的类,他们提供了一种在同一端点上划分不同HTTP请求类型的处理方式.不是定义和装饰三个不同的处理函数,而是为每个端点支持的请求类型分配一个处理函数,可以为端点分配一个基于类的视图. 定义视图 基于类的视图应该是子类HTTPMethodView,关于HTTPMethodView的简单用法在前面的博文中有简单的提到过.我们可以自定义一个类继承于HTTPMethodView,然后你可

  • Sanic框架应用部署方法详解

    本文实例讲述了Sanic框架应用部署方法.分享给大家供大家参考,具体如下: 简介 Sanic是一个类似Flask的Python 3.5+ Web服务器,它的写入速度非常快.除了Flask之外,Sanic还支持异步请求处理程序.这意味着你可以使用Python 3.5中新的闪亮的异步/等待语法,使你的代码非阻塞和快速. 在之前的博文中已经讲到如何使用Sanic开发一个Python后台程序,接下来记录一下怎么部署Sanic应用 部署 内置的网络服务器简化了Sanic的部署,在定义了一个sanic.Sa

  • Sanic框架流式传输操作示例

    本文实例讲述了Sanic框架流式传输操作.分享给大家供大家参考,具体如下: 简介 Sanic是一个类似Flask的Python 3.5+ Web服务器,它的写入速度非常快.除了Flask之外,Sanic还支持异步请求处理程序.这意味着你可以使用Python 3.5中新的闪亮的异步/等待语法,使你的代码非阻塞和快速. 在前面一篇<Sanic框架Cookies操作>中已经讲到,如何在Sanic中使用Cookie,接下来将介绍一下Sanic的流的使用: 请求流式传输 Sanic允许通过流获取请求数据

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

    目录 坑: 原因: 结论: 回过头看: 后记 坑: 在python3.7环境下,通过官方文档安装sanic即扩展插件,但是 sanic-ext包不起作用,具体的表现为:无法打开路由/docs. 这里的坑在于,服务启动时,sanic不会报错.因此很难定位出问题在sanic-ext. 原因: 寻找sanic-ext不起作用的原因: 首先在虚拟环境中执行import sanic_ext 结果报错,提示缺少importlib.metadata 查询当前环境下importlib.metadata的版本,发

  • python3.7环境下安装Anaconda的教程图解

    下载Anaconda安装包 官网下载或是在清华大学镜像站下载,我安装的是下面这个版本: 安装过程 配置环境 将anaconda的scripts文件夹路径添加到环境变量中. 如果命令行输入输出如图所示则安装成功: 为了避免可能发生的错误, 我们在命令行输入conda upgrade --all 先把所有工具包进行升级.(也可以不安装升级) 打开pycharm,如图点击add local 点击第三个选项,system interpreter,选择python.exe路径,点击ok,就可以了. 总结

  • python3.6环境下如何安装freetype库和基本使用方法

    FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等.在做图像展示的时候,可以写入中文文字,效果还是很好. 在之前安装库时基本都是直接切换到python3.6环境下直接pip install XXX,在安装freetype直接pip install freetype不可以了,查了半天又是编译又是官网下载的,太麻

  • python3.6环境下安装freetype库和基本使用方法(推荐)

    FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等.在做图像展示的时候,可以写入中文文字,效果还是很好. 在之前安装库时基本都是直接切换到python3.6环境下直接pip install XXX,在安装freetype直接pip install freetype不可以了,查了半天又是编译又是官网下载的,太麻

  • 浅谈Python3中datetime不同时区转换介绍与踩坑

    最近的项目需要根据用户所属时区制定一些特定策略,学习.应用了若干python3的时区转换相关知识,这里整理一部分记录下来. 下面涉及的几个概念及知识点: GMT时间:Greenwich Mean Time, 格林尼治平均时间 UTC时间:Universal Time Coordinated 世界协调时,可以认为是更精准的GMT时间,但两者误差极小,在1s以内,一般可视为等同 LMT:Local Mean Time, 当地标准时间 Python中的北京时间:Python的标准timezone中信息

  • ThinkPHP框架下微信支付功能总结踩坑笔记

    本文实例讲述了ThinkPHP框架下微信支付功能总结.分享给大家供大家参考,具体如下: 摘要 此文主要为个人解决 ThinkPHP3.2.3 下微信支付所遇到的一些坑的解决方案,仅供参考 详情请参考 原文 : 微信公众平台开发教程之ThinkPHP框架下微信支付功能 踩坑记录 为便于参考,此处附录部分 weixinpay.class代码截图 ①. 验证不严谨,损失教训 补充时间:[2017-01-02] 情况描述 [我尊重你,但不认同你] 恰逢元旦期间,遭到微信支付被大牛攻破的情况,损失近 80

  • Apache环境下PHP利用HTTP缓存协议原理解析及应用分析

    对于静态页面还有Etag. 一.先来看第一种情况:apache 静态页面 apache发送给客户端的静态页面一般包含Last-Modified和Etag,这两个标签的值来自静态文件的修改时间和inode. 下面是截取得apache返回客户端的头 XML/HTML代码 复制代码 代码如下: Last-Modified: Fri, 26 Jan 2007 01:53:34 GMT ETag: "3f9f640-318-cb9f8380" 搜索引擎之所以喜欢静态文件是因为有这两个标识,可以判

  • Python3.9环境搭建RobotFramework的详细过程

    目录 Python3.9.9+RobotFramework环境搭建 一.Python安装 二.RobotFramework安装 三.WxPython安装 四.RIDE安装 五.Selenuim2library安装 六.robotframework-appiumlibrary安装 七.robotframework-databaselibrary安装 八.robotframework-requests安装 九.基于数据驱动测试库的安装 十.验证是否安装成功 PS:robotframework在pyt

  • win10环境下python3.5安装步骤图文教程

    点我去Python官网下载 往下翻几页就能看到各种版本的Python,当前最新的是Python3.6,也没多大区别,我选择的是3.5.2 64位的,点击download 根据自己的电脑配置,我选择的是64位的 一路默认下去吧! 安装成功!下面打开命令提示符,输入python,回车如下图一样就安装成功啦! 以上所述是小编给大家介绍的win10环境下python3.5安装步骤图文教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!

  • Linux环境下python2.7.6升级python3.5.2

    需求 Linux环境下有些是自带的Python2版本有时是刚安装号的Python其他版本,当新版本出来的时候,在开发的时候往往会选择新版本的软件进行安装. 原因 在开发的时候选用新版本的软件进行安装的时候,出于以下角度来考虑的. 老版本的一些第三方软件库会随着新版本软件的更新,老本版所支持的第三方库就没有人去维护和更新了,后面在使用的过程中,如果出现了bug,就会花很大的精力去解决. 步骤 基于上面的要求,我将生产虚机上的ython2.7.6升级python3.5.2,主要步骤如下所示: 去py

随机推荐