Python:关于flask框架的flask_scrip._compat

news/2024/12/29 12:55:40/

关于flask框架的flask_scrip._compat

  • compat是什么
    • 源码
    • Flask版本书写不同

compat是什么

compat 英文单词同胞的意思
compat的功能是在py的不同版本之间做兼容处理
compat的注释
一些py2/py3兼容性支持基于精简版的six,因此我们不必依赖于它的特定版本。

源码

# -*- coding: utf-8 -*-
"""flask_script._compat~~~~~~~~~~~~~~~~~~~~Some py2/py3 compatibility support based on a stripped downversion of six so we don't have to depend on a specific versionof it.:copyright: (c) 2013 by Armin Ronacher.:license: BSD, see LICENSE for more details.
"""
import sysPY2 = sys.version_info[0] == 2
PYPY = hasattr(sys, 'pypy_translation_info')
_identity = lambda x: xif not PY2:unichr = chrrange_type = rangetext_type = strstring_types = (str, )integer_types = (int, )iterkeys = lambda d: iter(d.keys())itervalues = lambda d: iter(d.values())iteritems = lambda d: iter(d.items())import picklefrom io import BytesIO, StringIONativeStringIO = StringIOdef reraise(tp, value, tb=None):if value.__traceback__ is not tb:raise value.with_traceback(tb)raise valueifilter = filterimap = mapizip = zipintern = sys.internimplements_iterator = _identityimplements_to_string = _identityencode_filename = _identityget_next = lambda x: x.__next__input = inputelse:unichr = unichrtext_type = unicoderange_type = xrangestring_types = (str, unicode)integer_types = (int, long)iterkeys = lambda d: d.iterkeys()itervalues = lambda d: d.itervalues()iteritems = lambda d: d.iteritems()import cPickle as picklefrom cStringIO import StringIO as BytesIO, StringIONativeStringIO = BytesIOexec('def reraise(tp, value, tb=None):\n raise tp, value, tb')from itertools import imap, izip, ifilterintern = interndef implements_iterator(cls):cls.next = cls.__next__del cls.__next__return clsdef implements_to_string(cls):cls.__unicode__ = cls.__str__cls.__str__ = lambda x: x.__unicode__().encode('utf-8')return clsget_next = lambda x: x.nextdef encode_filename(filename):if isinstance(filename, unicode):return filename.encode('utf-8')return filenameinput = raw_inputdef with_metaclass(meta, *bases):# This requires a bit of explanation: the basic idea is to make a# dummy metaclass for one level of class instantiation that replaces# itself with the actual metaclass.  Because of internal type checks# we also need to make sure that we downgrade the custom metaclass# for one level to something closer to type (that's why __call__ and# __init__ comes back from type etc.).## This has the advantage over six.with_metaclass in that it does not# introduce dummy classes into the final MRO.class metaclass(meta):__call__ = type.__call____init__ = type.__init__def __new__(cls, name, this_bases, d):if this_bases is None:return type.__new__(cls, name, (), d)return meta(name, bases, d)return metaclass('temporary_class', None, {})try:from urllib.parse import quote_from_bytes as url_quote
except ImportError:from urllib import quote as url_quote

Flask版本书写不同

如遇到以下问题:

Traceback (most recent call last):File "D:/code/p11/sylpro/main.py", line 1, in <module>from flask_script import Manager,ServerFile "D:\code\p11\sylpro\venv\lib\site-packages\flask_script\__init__.py", line 15, in <module>from flask._compat import text_type
ModuleNotFoundError: No module named 'flask._compat'

可以降低版本至1.1.2及以下,
或者修改到如下图效果:
在这里插入图片描述
卸载命令如下
pip uninstall flask==1.1.2 这个是卸载指定版本的
pip uninstall flask 直接卸载python里面的flask也行
12
卸载后到报错的源码里面取改源码
修改一下
flask_script/init.py中
from ._compat import text_type
改成
from flask_script._compat import text_type 。
以上参考:Deng872347348


http://www.ppmy.cn/news/415869.html

相关文章

品优购项目学习记录02-main主体盒子搭建,推荐模块

文章目录 一、main主体盒子搭建1.1 newsflash新闻快报模块1.1.1 news新闻模块1.1.2 lifeservice生活服务模块1.1.3 bargain模块 二、推荐模块 一、main主体盒子搭建 1.main盒子宽度为980像素&#xff0c;位置距离左边220px(margin-left)&#xff0c;给高度就不用清除浮动 2.mai…

解决H5在native中键盘弹起影响页面交互

您好&#xff0c;如果喜欢我的文章&#xff0c;可以关注我的公众号「量子前端」&#xff0c;将不定期关注推送前端好文~ 问题描述 在native中拉起键盘再收回&#xff0c;滚动列表实际距离发生变化&#xff0c;被键盘一起弹上去了&#xff08;我这里大约是400px的样子&#xf…

OSChina 周二乱弹 ——有时醒来发现身边是不同的姑娘

2019独角兽企业重金招聘Python工程师标准>>> 马晓倩osc : 时间过得太快了. 假期总给你这样的感觉&#xff0c; 用欢快的心情迎接工作吧。 手机版的想听音乐&#xff0c;请戳&#xff08;这里&#xff09; codeIsMyGirl : 防不胜防。 人和人之间的信任呢&#xff01;…

JAVA学习总结十四

第四章 使用DML修改数据库 本章主要集中于对数据库的增删改的内容继续进行讲解&#xff0c;所以以示例展示的方式即可。 – 创建一个新的数据库 CREATE DATABASE homework; – 学生表&#xff1a;t_student – 编号s_id 整形 主键 自增 – 姓名&#xff1a;s_name 字符串…

使用ListView实现聊天界面

使用listview实现聊天界面如下: 实现聊天界面的的方法可以在定义baseAdapter的时候重写getItemViewType()方法返回第positon个Item是何种类型,重写getVIewTypeCount()方法来返回不同的布局总数,在获取布局的时候,判断一下该获取哪一种布局就可以了。也可以定义两个布局来实…

不可不知的全面产品分析

不可不知的全面产品分析 经过各大应用市场&#xff0c;搜索引擎&#xff0c;社会化媒体&#xff08;用搜狗搜索微信朋友圈相关文章&#xff0c;微博搜索相关话题&#xff09;&#xff0c;行业媒体&#xff08;36kr、虎嗅、钛媒体、知乎、人人都是产品经理、艾瑞咨询、易观智库&…

nlp总结

中科院nlpir和海量分词&#xff08;http://www.hylanda.com/&#xff09;是收费的。 hanlp:推荐基于CRF的模型的实现~~要看语料&#xff0c;很多常用词会被分错&#xff0c;所以需要词库支撑。目前最友好的开源工具包应该是HanLP&#xff0c;基于词典&#xff0c;对各种实体词汇…

简单循环

names[yangyuying,zilingxi,ziye,muziyi] for name in names:print(name)>>> yangyuying zilingxi ziye muziyii0 while i<3:i1print(i)>>> 1 2 3for i in range(5):print(i)>>> 0 1 2 3 4actor[[黄景瑜,刘昊然,吴亦凡],[朴海镇,宋钟基,朴灿烈]]…