Flask-Session 无法从 itsdangerous 导入 want_bytes

Flask-Session can't import want_bytes from itsdangerous

我正在使用 Flask-Session,最近安装或升级到 itsdangerous 1.0.0。现在我收到错误 ImportError: cannot import name 'want_bytes'。为什么会发生此错误,我该如何解决?

from flask import Flask, session
from flask_session import Session

app = Flask(__name__)
app.config["SESSION_TYPE"] = "filesystem"
Session(app)
Traceback (most recent call last):
  File "c:\program files\python36\lib\site-packages\flask\cli.py", line 330, in               __call__
    rv = self._load_unlocked()
  File "c:\program files\python36\lib\site-packages\flask\cli.py", line 317, in          _load_unlocked
    self._app = rv = self.loader()
  File "c:\program files\python36\lib\site-packages\flask\cli.py", line 372, in load_app
    app = locate_app(self, import_name, name)
  File "c:\program files\python36\lib\site-packages\flask\cli.py", line 242, in locate_app
    '\n\n{tb}'.format(name=module_name, tb=traceback.format_exc())
flask.cli.NoAppException: While importing "application", an ImportError was raised:

Traceback (most recent call last):
  File "c:\program files\python36\lib\site-packages\flask\cli.py", line 235, in locate_app
    __import__(module_name)
  File "C:\Program Files\Python36\learningPython\web_CS50\project1\application.py", line 4, in <module>
    from flask_session import Session
  File "c:\program files\python36\lib\site-packages\flask_session\__init__.py", line 16, in <module>
    from .sessions import NullSessionInterface, RedisSessionInterface, \
  File "c:\program files\python36\lib\site-packages\flask_session\sessions.py", line 23, in <module>
    from itsdangerous import Signer, BadSignature, want_bytes
ImportError: cannot import name 'want_bytes'

我被这个问题难住了,无法在 Whosebug 上或任何地方找到适用或有用的答案。

itsdangerous 1.1.0 包含对此的临时修复。您可以立即升级它的危险并继续使用 Flask-Session。无需固定到 itsdangerous==0.24.


itsdangerous 1.0.0 最近发布,删除了非public 顶级导入。 Flask-Session 似乎一直在使用这样的导入,from itsdangerous import want_bytes.

这已 reported to Flask-Session,希望最终会发布修复程序。

itsdangerous 包的文件结构已更改。该函数位于 session.py 文件中。更改导入语句来自:

from itsdangerous import Signer, BadSignature, want_bytes

from itsdangerous import Signer, BadSignature
from itsdangerous.encoding import want_bytes

适合我。