2 小时前推送的 1.0.0 版本发布了对使用烧瓶的人的重大更改。 不确定这是否是预期的效果,flask 应该固定他们的版本,或者这个项目是否需要发生变化。
如果您遇到任何问题,请发布完整的回溯。
问题不在于 Flask,Werkzeug 将不会继续支持这些已弃用的导入。 0.16 已经发布了 5 个月的弃用警告。 使用该版本作为中间步骤来确定哪些导入发生了变化。
您可以通过在相关项目中打开问题或提交 PR 来帮助扩展和其他项目。
Traceback (most recent call last):
File "/usr/local/bin/pytest", line 8, in <module>
sys.exit(main())
File "/usr/local/lib/python3.7/site-packages/_pytest/config/__init__.py", line 73, in main
config = _prepareconfig(args, plugins)
File "/usr/local/lib/python3.7/site-packages/_pytest/config/__init__.py", line 224, in _prepareconfig
pluginmanager=pluginmanager, args=args
File "/usr/local/lib/python3.7/site-packages/pluggy/hooks.py", line 286, in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
File "/usr/local/lib/python3.7/site-packages/pluggy/manager.py", line 93, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/usr/local/lib/python3.7/site-packages/pluggy/manager.py", line 87, in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 203, in _multicall
gen.send(outcome)
File "/usr/local/lib/python3.7/site-packages/_pytest/helpconfig.py", line 89, in pytest_cmdline_parse
config = outcome.get_result()
File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 80, in get_result
raise ex[1].with_traceback(ex[2])
File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
res = hook_impl.function(*args)
File "/usr/local/lib/python3.7/site-packages/_pytest/config/__init__.py", line 794, in pytest_cmdline_parse
self.parse(args)
File "/usr/local/lib/python3.7/site-packages/_pytest/config/__init__.py", line 1000, in parse
self._preparse(args, addopts=addopts)
File "/usr/local/lib/python3.7/site-packages/_pytest/config/__init__.py", line 948, in _preparse
self.pluginmanager.load_setuptools_entrypoints("pytest11")
File "/usr/local/lib/python3.7/site-packages/pluggy/manager.py", line 299, in load_setuptools_entrypoints
plugin = ep.load()
File "/usr/local/lib/python3.7/site-packages/importlib_metadata/__init__.py", line 94, in load
module = import_module(match.group('module'))
File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "/usr/local/lib/python3.7/site-packages/_pytest/assertion/rewrite.py", line 143, in exec_module
exec(co, module.__dict__)
File "/usr/local/lib/python3.7/site-packages/pytest_flask/plugin.py", line 14, in <module>
from werkzeug import cached_property
ImportError: cannot import name 'cached_property' from 'werkzeug' (/usr/local/lib/python3.7/site-packages/werkzeug/__init__.py)
那是 pytest-flask,您需要联系他们。 看起来 pytest-flask 0.15.1 已经发布了一个修复程序。
+1,有以下问题:
packages/flask_wtf/recaptcha/widgets.py", line 5, in <module>
from werkzeug import url_encode
ImportError: cannot import name 'url_encode'
+1 这个最新版本也打破了我们的依赖关系。 似乎是 V1.0.0 的问题
```回溯(最近一次调用最后一次):
文件“/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask/cli.py”,第 240 行,在 locate_app
__import__(module_name)
文件“/home/ec2-user/butter_web/butter.py”,第 1 行,在
从应用程序导入应用程序,数据库
文件“/home/ec2-user/butter_web/app/__init__.py”,第 8 行,在
从flask_admin.contrib.sqla 导入模型视图
文件“/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/contrib/sqla/__init__.py”,第2行,在
从 .view 导入 ModelView
文件“/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/contrib/sqla/view.py”,第19行,在
从flask_admin.model 导入BaseModelView
文件“/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/model/__init__.py”,第2行,在
从 .base 导入 BaseModelView
文件“/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/model/base.py”,第8行,在
从 werkzeug 导入 secure_filename
导入错误:无法导入名称“secure_filename”
这里的解决方案是什么? 显式锁定 0.16.1 不能解决这个问题。
@tjohnson4请参阅我上面的评论以了解该怎么做。 您在 Flask 问题上发布的错误是无关的。
这是一种非常糟糕的用户体验。 带有修复程序的 Flask-WTF 0.14.3 已于数小时前发布。 当生态系统的大部分都没有为此做好准备时,我们如何推出一个取消支持的版本?
我相信这是我第三次对托盘库之一的更新破坏了我在不到六个月内运行的代码。
类似的问题
Traceback (most recent call last):
File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/ubuntu/swagger-codegen/samples/server/petstore/flaskConnexion/swagger_server/__main__.py", line 3, in <module>
import connexion
File "/home/ubuntu/.local/lib/python3.6/site-packages/connexion/__init__.py", line 3, in <module>
from .apis import AbstractAPI # NOQA
File "/home/ubuntu/.local/lib/python3.6/site-packages/connexion/apis/__init__.py", line 1, in <module>
from .abstract import AbstractAPI # NOQA
File "/home/ubuntu/.local/lib/python3.6/site-packages/connexion/apis/abstract.py", line 14, in <module>
from ..operation import Operation
File "/home/ubuntu/.local/lib/python3.6/site-packages/connexion/operation.py", line 7, in <module>
from .decorators import validation
File "/home/ubuntu/.local/lib/python3.6/site-packages/connexion/decorators/validation.py", line 9, in <module>
from werkzeug import FileStorage
ImportError: cannot import name 'FileStorage'
解决方法
将werkzeug == 0.16.1
到 requirements.txt 为我解决了
@Abdelsalam-Abbas connexion 在 2019 年 10 月修复了该导入——也许您正在运行旧版本?
https://github.com/zalando/connexion/releases/tag/2.4.0
如果你的 Flask-Session 坏了:
File "/usr/local/lib/python3.8/site-packages/flask_session/__init__.py", line 61, in init_app
app.session_interface = self._get_interface(app)
File "/usr/local/lib/python3.8/site-packages/flask_session/__init__.py", line 90, in _get_interface
session_interface = FileSystemSessionInterface(
File "/usr/local/lib/python3.8/site-packages/flask_session/sessions.py", line 313, in __init__
from werkzeug.contrib.cache import FileSystemCache
ModuleNotFoundError: No module named 'werkzeug.contrib'
将werkzeug == 0.16.1
到 requirements.txt 为我解决了
如果您的 Flask-RestPlus 坏了:
Traceback (most recent call last):
File "/export/home/hysdsops/sciflo/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app
__import__(module_name)
File "/export/home/hysdsops/sciflo/ops/pele/app.py", line 4, in <module>
from pele import create_app, db
File "/export/home/hysdsops/sciflo/ops/pele/pele/__init__.py", line 5, in <module>
from flask_restplus import apidoc
File "/export/home/hysdsops/sciflo/lib/python3.7/site-packages/flask_restplus/__init__.py", line 4, in <module>
from . import fields, reqparse, apidoc, inputs, cors
File "/export/home/hysdsops/sciflo/lib/python3.7/site-packages/flask_restplus/fields.py", line 17, in <module>
from werkzeug import cached_property
ImportError: cannot import name 'cached_property' from 'werkzeug' (/export/home/hysdsops/sciflo/lib/python3.7/site-packages/werkzeug/__init__.py)
将werkzeug == 0.16.1
到 requirements.txt 为我解决了它。
有人会介意提供一些洞察为什么我从werkzeug
的LocalProxy
返回的烧瓶请求对象来自不同的版本,然后我在本地拥有吗?
自此版本以来,我收到此错误:
File "/Users/lucas/Software/anaconda3/envs/pytest/lib/python3.6/site-packages/flask/json.py", line 251, in jsonify
if current_app.config['JSONIFY_PRETTYPRINT_REGULAR'] and not request.is_xhr:
File "/Users/lucas/Software/anaconda3/envs/pytest/lib/python3.6/site-packages/werkzeug/local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
AttributeError: 'Request' object has no attribute 'is_xhr'
is_xhr
是在 Flask 1.0
删除的属性,但在本地我安装了0.12.2
。 为了清楚起见,我在这里发布此问题是因为该错误不在 Flask 中,而我只是对LocalProxy
为什么/如何返回此 Flask 应用程序的较新版本感到困惑,然后我期待。
@LucasLLC is_xhr
从来都不是 Flask 的直接组成部分(有没有说明它在 Flask 1.0 中被删除了?我在更新日志中看不到它),而是它一直是 Flask 公开的 Werkzeug API。 就 Werkzeug 而言,您可以看到它在 81e10efbf3a83daf09c55cd7cc13ac6c6464d405 中被删除。
如果您还没有,我建议您固定您的依赖项并定期升级,通过诸如诗歌之类的工具可以轻松完成这项繁琐的工作。
@pgjones理想情况下,我们对flask 0.12 进行了错误修复版本,将werkzeug 固定到< 1.0.0。 这毕竟是 Flask 中的一个坏引脚。
同样是的,这个 API 是有效的 Flask API,它被记录如下: https :
安装odoo12时出现问题:
import werkzeug.contrib.fixers
ImportError: No module named 'werkzeug.contrib'
但是,解决了它
Werkzeug==0.16.1
发生了同样的错误
ModuleNotFoundError:没有名为“werkzeug.contrib”的模块
与烧瓶有同样的问题
设置Werkzeug==0.16.1
解决了这个问题。
``
从flask_admin.contrib.sqla 导入模型视图
文件“/usr/local/lib/python3.6/site-packages/flask_admin/contrib/sqla/__init__.py”,第2行,在
从 .view 导入 ModelView
文件“/usr/local/lib/python3.6/site-packages/flask_admin/contrib/sqla/view.py”,第18行,在
从flask_admin.model 导入BaseModelView
文件“/usr/local/lib/python3.6/site-packages/flask_admin/model/__init__.py”,第2行,在
从 .base 导入 BaseModelView
文件“/usr/local/lib/python3.6/site-packages/flask_admin/model/base.py”,第8行,在
从 werkzeug 导入 secure_filename
导入错误:无法导入名称“secure_filename”
最有用的评论
这是一种非常糟糕的用户体验。 带有修复程序的 Flask-WTF 0.14.3 已于数小时前发布。 当生态系统的大部分都没有为此做好准备时,我们如何推出一个取消支持的版本?
我相信这是我第三次对托盘库之一的更新破坏了我在不到六个月内运行的代码。