如何在烧瓶中禁用外部库的ExtDeprecationWarning

时间:2016-06-28 14:37:19

标签: python flask

当我运行我的脚本时,我得到了这个输出:

/app/venv/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.sqlalchemy is deprecated, use flask_sqlalchemy instead.
  .format(x=modname), ExtDeprecationWarning
/app/venv/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.marshmallow is deprecated, use flask_marshmallow instead.
  .format(x=modname), ExtDeprecationWarning
/app/venv/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.cache is deprecated, use flask_cache instead.
  .format(x=modname), ExtDeprecationWarning
/app/venv/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.restful is deprecated, use flask_restful instead.
  .format(x=modname), ExtDeprecationWarning
/app/venv/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.restful.fields is deprecated, use flask_restful.fields instead.
  .format(x=modname), ExtDeprecationWarning
/app/venv/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.restful.reqparse is deprecated, use flask_restful.reqparse instead.
  .format(x=modname), ExtDeprecationWarning
/app/venv/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.restplus is deprecated, use flask_restplus instead.
  .format(x=modname), ExtDeprecationWarning
/app/venv/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.restful.representations is deprecated, use flask_restful.representations instead.
  .format(x=modname), ExtDeprecationWarning
/app/venv/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.script is deprecated, use flask_script instead.
  .format(x=modname), ExtDeprecationWarning
/app/venv/lib/python2.7/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.migrate is deprecated, use flask_migrate instead.
  .format(x=modname), ExtDeprecationWarning

我并不关心这一点,因为外部库正在造成这种情况。我不能更新这些库,因为我不拥有它们,我看到有几个库有待处理的拉请求。

我怎样才能安静下来?

2 个答案:

答案 0 :(得分:13)

从Flask 1.0开始,flask.ext不存在。未修复这些导入的软件包将无效。

首先,关心此事,因为您使用的软件包不是最新的。使用直接导入名称(例如flask_sqlalchemy)报告他们应切换到的错误,而不是flask.ext导入挂钩。

添加warnings.simplefilter行以过滤掉这些警告。您可以在执行任何会引发警告的导入之前将其放置在配置应用程序的任何位置。

import warnings
from flask.exthook import ExtDeprecationWarning

warnings.simplefilter('ignore', ExtDeprecationWarning)

答案 1 :(得分:0)

我无法确定您的问题,但我很确定源文件中的导入会导致这些警告。

如果您使用的是已弃用的flask.ext导入重定向,则例如:

flask.ext.sqlalchemy import SQLAlchemy()

成为直接导入:

from flask_sqlalchemy import SQLAlchemy()

如果您正在使用Linux,这个单行将以递归方式对所有文件和文件夹进行更改(来自./).

首先备份到不同的文件路径 - 我不能肯定地说它不会破坏.git目录或您使用的其他svn的内容等。或者只是手动进行修改。

find ./ -type f exec sed -i 's/flask.ext./flask_/g' {} \;