错误“from itsdangerous import json as _json ImportError: 无法从 'itsdangerous' 导入名称 'json'”

20 google-cloud-platform

在将Flask应用程序部署到Google Cloud Platform时,我收到此错误:

[ERROR] Exception in worker process from itsdangerous import json as _json ImportError: cannot import name 'json' from 'itsdangerous'

2022-02-18 08:00:30 default[20220218t132659]  Traceback (most recent call last):
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
  worker.init_process()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 92, in init_process
  super().init_process()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/workers/base.py", line 134, in init_process
  self.load_wsgi()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
  self.wsgi = self.app.wsgi()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
  self.callable = self.load()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
  return self.load_wsgiapp()
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
  return util.import_app(self.app_uri)
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/util.py", line 359, in import_app
  mod = importlib.import_module(module)
File "/opt/python3.7/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 "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/srv/main.py", line 16, in <module>
  from flask import Flask, render_template,make_response,jsonify, abort, send_from_directory, request, redirect
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/__init__.py", line 19, in <module>
  from . import json
File "/layers/google.python.pip/pip/lib/python3.7/site-packages/flask/json/__init__.py", line 15, in <module>
  from itsdangerous import json as _json
ImportError: cannot import name 'json' from 'itsdangerous' (/layers/google.python.pip/pip/lib/python3.7/site-packages/itsdangerous/__init__.py)
Run Code Online (Sandbox Code Playgroud)

小智 15

Flask 1.1.2设置为要求itsdangerous >= 0.24。最新发布的 ( itsdangerous ) 版本 (2.10) 弃用了 JSON API。

要继续使用 Flask 1.1.2,您最多需要itdangerous 2.0.1(而不是 2.10)。您可以通过添加来做到这一点

itsdangerous==2.0.1
Run Code Online (Sandbox Code Playgroud)

...到您的requirements.txt文件(或您列出依赖项的任何位置)。

危险的2.10 变更日志


小智 10

我刚刚遇到了同样的问题,并将 Flask 升级到版本 1.1.4,但后来我得到了:

来自“markupsafe”的“soft_unicode”

这个问题似乎是相关的:ImportError: Cannot import name 'soft_unicode' from 'markupsafe' in Release 1.38.0 #3661

将 markupsafe 降级到版本 2.0.1 为我解决了这个问题。


小智 9

Flask更新为1.1.4,或将其危险版本修复为2.0.1


小智 0

我今天发现了同样的问题。

我使用的是 Flask 1.1.2 版本。更新到1.1.4版本后问题消失。