Werkzeug: バージョン1.0.0は、以前に廃止されたコードを削除しました

作成日 2020年02月06日  ·  22コメント  ·  ソース: pallets/werkzeug

2時間前にプッシュされた1.0.0リリースは、flaskを使用している人々のための重大な変更を公開しました。 それが望ましい効果であり、フラスコがそれらのバージョンを固定する必要があるかどうか、またはこのプロジェクトで変更を行う必要があるかどうかはわかりません。

最も参考になるコメント

これは完全にひどいユーザーエクスペリエンスです。 修正されたFlask-WTF0.14.3は数時間前にリリースされました。 エコシステムの大部分がこれに対応する準備ができていなかったときに、サポートを削除するリリースをどのようにプッシュしますか?

パレットライブラリの1つを更新すると、6か月以内に実行していたコードが壊れたのはこれが3回目だと思います。

全てのコメント22件

問題が発生した場合は、完全なトレースバックを投稿してください。

この問題はFlaskにはなく、Werkzeugはこれらの非推奨のインポートを引き続きサポートしません。 0.16は、5か月間非推奨の警告を発行しています。 そのバージョンを中間ステップとして使用して、どのインポートが変更されたかを識別します。

問題を開くか、関連するプロジェクトでPRを送信することにより、拡張機能やその他のプロジェクトを支援できます。

  • Flask-管理者1.5.5
  • Flask-Babel 1.0
  • フラスコ-BabelEx0.9.4
  • フラスコレストプラス(マージされず、フラスコレストを優先して維持されない)
  • フラスコレスト(マージ済み、まだリリースされていません)
  • フラスコテスト0.8.0
  • フラスコ-WTF0.14.3
  • django-extensions 2.2.8
  • pytest-flask 0.15.1
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-flask0.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行目
アプリインポートアプリから、db
ファイル "/home/ec2-user/butter_web/app/__init__.py"、8行目
フラスコからadmin.contrib.sqlaインポートModelView
ファイル "/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/contrib/sqla/__init__.py"、2行目
from .view import ModelView
ファイル "/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/contrib/sqla/view.py"、19行目
フラスコ_admin.modelからインポートBaseModelView
ファイル "/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/model/__init__.py"、2行目
from .base import BaseModelView
ファイル "/home/ec2-user/butter_web/venv/lib64/python3.6/site-packages/flask_admin/model/base.py"、8行目
werkzeugからimportsecure_filename
ImportError:名前 'secure_filename'をインポートできません

ここでの解決策は何ですか? 0.16.1を明示的にロックしても、これは解決されません。

@ tjohnson4何をすべきかについては、上記の私のコメントを参照してください。 Flaskの問題に投稿したエラーは無関係でした。

これは完全にひどいユーザーエクスペリエンスです。 修正されたFlask-WTF0.14.3は数時間前にリリースされました。 エコシステムの大部分がこれに対応する準備ができていなかったときに、サポートを削除するリリースをどのようにプッシュしますか?

パレットライブラリの1つを更新すると、6か月以内に実行していたコードが壊れたのはこれが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を追加します。txtは私のためにそれを解決しました

@ Abdelsalam-Abbas connexionは、2019年10月にインポートを修正しました-おそらく古いバージョンを実行していますか?
https://github.com/zalando/connexion/releases/tag/2.4.0

Flaskセッションが壊れている場合:

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を追加します。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を追加します。txtは私のためにそれを解決しました。

werkzeugLocalProxyから返されたフラスコリクエストオブジェクトが、ローカルにあるものとは異なるバージョンからのものである理由について、誰かが洞察を提供してくれませんか?

このリリース以降、次のエラーが発生します。
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が公開するのは常にWerkzeugAPIでした。 Werkzeugに関しては、81e10efbf3a83daf09c55cd7cc13ac6c6464d405で削除されていることがわかります。

まだ依存関係を固定して定期的にアップグレードすることをお勧めします。これは、などのツールによって簡単にできる雑用です。

@pgjones理想的には、werkzeugを<1.0.0に固定するフラスコ0.12のバグ修正リリースを行います。 これは結局、Flaskの悪いピンです。

また、はい、このAPIは事実上Flask APIであり、次のように文書化されています//flask.palletsprojects.com/en/0.12.x/​​api/#flask.Request.is_xhr

@LucasLLC is_xhrはFlaskの直接の一部ではありませんでした(Flask 1.0で削除されたことを示す参照はありますか?変更ログに表示されません)。むしろ、Flaskが公開するのは常にWerkzeugAPIでした。 Werkzeugに関しては、 81e10efで削除されていることが

ああ、私の間違い。 このメソッドで生成された警告を参照していましたが、それがWerkzeugからのものであることに気づいていませんでした。これは、はるかに理にかなっています。

まだ依存関係を固定して定期的にアップグレードすることをお勧めします。これは、などのツールによって簡単にできる雑用です。

ヒントをありがとう! 詩を調べます。

odoo12のインストール中に問題が発生しました:

    import werkzeug.contrib.fixers
ImportError: No module named 'werkzeug.contrib'

しかし、それを解決しました

Werkzeug==0.16.1

同じエラーが発生しました

ModuleNotFoundError:「werkzeug.contrib」という名前のモジュールがありません

フラスコで同じ問題を抱えている

Werkzeug==0.16.1設定すると、問題が修正されました。

`` `
フラスコからadmin.contrib.sqlaインポートModelView
ファイル "/usr/local/lib/python3.6/site-packages/flask_admin/contrib/sqla/__init__.py"、2行目

from .view import ModelView
ファイル "/usr/local/lib/python3.6/site-packages/flask_admin/contrib/sqla/view.py"、18行目

フラスコ_admin.modelからインポートBaseModelView
ファイル "/usr/local/lib/python3.6/site-packages/flask_admin/model/__init__.py"、2行目

from .base import BaseModelView
ファイル "/usr/local/lib/python3.6/site-packages/flask_admin/model/base.py"、8行目

werkzeugからimportsecure_filename
ImportError:名前 'secure_filename'をインポートできません

このページは役に立ちましたか?
0 / 5 - 0 評価