扫码关注官方订阅号
在跟着《Flask Web开发:基于Python的Web应用开发实战》这本书中的例子写程序。先用pip安装flask-bootstrap后使用from flask.ext.bootstrap import Bootstrap导入但显示的是这样的:
from flask.ext.bootstrap import Bootstrap
之前还试了flask-script也是这个样子的。
欢迎选择我的课程,让我们一起见证您的进步~~
from flask.ext.xxx import XXX 是老版本flask插件写法。现在应该是 from xxx import XXX。
还有些插件是from flask-xxx import XXX;ide左侧项目目录externalLibrary中点开能找到你下的包,看包名是什么;github上看官网推荐写法flask-bootstrap。
最近正在看flask的源代码,具体原理是这样的:
flask\ext__init.__pyimporter = ExtensionImporter(['flask_%s', 'flaskext.%s'], __name__)
importer = ExtensionImporter(['flask_%s', 'flaskext.%s'], __name__)
再看
flask\exthook.py中定义了ExtensionImporter
def __init__(self, module_choices, wrapper_module):以扩展的名称和原名创建导入器。然后在install函数中导入如下:sys.meta_path[:] = [x for x in sys.meta_path if self != x] + [self]将自己加入到sys.meta_path。可以理解为如果有对应名称的对象,则导入。可以看下python文档中meta_path的说明。
def __init__(self, module_choices, wrapper_module):
install
sys.meta_path[:] = [x for x in sys.meta_path if self != x] + [self]
sys.meta_path
meta_path
总的来说,就是当你导入flask.ext.xxx的时候,可能实际导入的是flask_xxx或者flaskext.xxx。因而IDE无法识别。
flask.ext.xxx
flask_xxx
flaskext.xxx
讲道理,不要使用IDE、不要在win下搞开发
可以跑就行了,ext是动态接口,IDE检测不到很正常
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
from flask.ext.xxx import XXX 是老版本flask插件写法。
现在应该是 from xxx import XXX。
还有些插件是from flask-xxx import XXX;ide左侧项目目录externalLibrary中点开能找到你下的包,看包名是什么;github上看官网推荐写法flask-bootstrap。
最近正在看flask的源代码,具体原理是这样的:
再看
def __init__(self, module_choices, wrapper_module):以扩展的名称和原名创建导入器。
然后在
install函数中导入如下:sys.meta_path[:] = [x for x in sys.meta_path if self != x] + [self]将自己加入到
sys.meta_path。可以理解为如果有对应名称的对象,则导入。可以看下python文档中meta_path的说明。总的来说,就是当你导入
flask.ext.xxx的时候,可能实际导入的是flask_xxx或者flaskext.xxx。因而IDE无法识别。讲道理,不要使用IDE、不要在win下搞开发
可以跑就行了,ext是动态接口,IDE检测不到很正常