"ImportError: cannot import name 'ImmutableDict'" error when installing pgAdmin4

"ImportError: cannot import name 'ImmutableDict'" error when installing pgAdmin4

我正在尝试在 Ubuntu 18.04 上安装 pgAdmin4,python3 在 this tutorial (https://www.digitalocean.com/community/tutorials/how-to-install-configure-pgadmin4-server-mode 之后),但是在配置 pgAdmin4 时出现此错误:

(my_env) 1 jess@hilarioserver:~/environments$ python my_env/lib/python3.6/site-packages/pgadmin4/setup.py
Traceback (most recent call last):
  File "my_env/lib/python3.6/site-packages/pgadmin4/setup.py", line 17, in <module>
    from pgadmin.model import db, User, Version, ServerGroup, Server, \
  File "/home/cta/environments/my_env/lib/python3.6/site-packages/pgadmin4/pgadmin/__init__.py", line 21, in <module>
    from flask_babelex import Babel, gettext
  File "/home/cta/environments/my_env/lib/python3.6/site-packages/flask_babelex/__init__.py", line 23, in <module>
    from werkzeug import ImmutableDict
ImportError: cannot import name 'ImmutableDict'

我已经尝试安装 werkzeug,但仍然出现同样的错误。

alembic (1.4.0) Babel (2.8.0) bcrypt (3.1.7) blinker (1.4) cffi (1.13.2) Click (7.0) cryptography (2.8) Flask (1.0.2) Flask-BabelEx (0.9.3) Flask-Compress (1.4.0) Flask-Gravatar (0.5.0) Flask-Login (0.4.1) Flask-Mail (0.9.1) Flask-Migrate (2.4.0) Flask-Paranoid (0.2.0) Flask-Principal (0.4.0) Flask-Security (3.0.0) Flask-SQLAlchemy (2.3.2) Flask-WTF (0.14.2) itsdangerous (1.1.0) Jinja2 (2.11.1) Mako (1.1.1) MarkupSafe (1.1.1) paramiko (2.7.1) passlib (1.7.1) pgadmin4 (4.18) pip (9.0.1) pkg-resources (0.0.0) psutil (5.5.1) psycopg2-binary (2.8.4) pycparser (2.19) PyNaCl (1.3.0) python-dateutil (2.8.1) python-editor (1.0.4) pytz (2018.9) setuptools (39.0.1) simplejson (3.16.0) six (1.14.0) speaklater (1.3) SQLAlchemy (1.3.13) sqlparse (0.2.4) sshtunnel (0.1.5) Werkzeug (1.0.0) wheel (0.34.2) WTForms (2.2.1)

有什么想法吗?

我今天在安装另一个软件包时一直在对此进行故障排除,看来今天发布的新版本可能会导致该问题。

https://pypi.org/project/Werkzeug/#history

我决定回到早期版本 (0.16.1),它解决了我的问题。降级:

pip install --upgrade werkzeug==0.16.1

希望这对你也有用。

v1.0.0 的导入方法已更改。请参阅此警告消息:

The import 'werkzeug.ImmutableDict' is deprecated and will be removed in Werkzeug 1.0. Use 'from werkzeug.datastructures import ImmutableDict' instead.
    from werkzeug import ImmutableDict
如果其他依赖项允许,

升级到 flask-babelex>=0.9.4(或其他项目的 flask-babel>=1.0.0)。 flask-babelex Github issue 21 flask-babel Github issue 162

从 werkzeug.datastructures 导入 ImmutableDict