'EntryPoints' 对象没有属性 'get' - 数字海洋

我已经部署到数字海洋,在登台(Heroku 服务器)应用程序运行良好,但数字海洋失败并出现以下错误,可能是什么问题:

AttributeError at /admin/
'EntryPoints' object has no attribute 'get'
Request Method: GET
Request URL:    https://xxxx/admin/
Django Version: 3.1
Exception Type: AttributeError
Exception Value:    
'EntryPoints' object has no attribute 'get'
Exception Location: /usr/local/lib/python3.7/site-packages/markdown/util.py, line 85, in <module>
Python Executable:  /usr/local/bin/python
Python Version: 3.7.5
Python Path:    
['/opt/app',
 '/usr/local/bin',
 '/usr/local/lib/python37.zip',
 '/usr/local/lib/python3.7',
 '/usr/local/lib/python3.7/lib-dynload',
 '/usr/local/lib/python3.7/site-packages',
 '/usr/local/lib/python3.7/site-packages/odf',
 '/usr/local/lib/python3.7/site-packages/odf',
 '/usr/local/lib/python3.7/site-packages/odf',
 '/usr/local/lib/python3.7/site-packages/odf',
 '/usr/local/lib/python3.7/site-packages/odf',
 '/usr/local/lib/python3.7/site-packages/odf',
 '/usr/local/lib/python3.7/site-packages/odf']
Server time:    Sun, 02 Oct 2022 21:41:00 +0000
stack overflow 'EntryPoints' object has no attribute 'get' - Digital ocean
原文答案
author avatar

接受的答案

因为 importlib-metadata 昨天发布了 v5.0.0,它删除了已弃用的端点。

你可以在你的 setup.py 中设置 importlib-metadata<5.0 这样它就不会安装最新版本。

或者,如果您使用 requirements.txt,您也可以将 importlib-metadata 设置为低于版本 5.0 例如 importlib-metadata==4.13.0

欲了解更多信息: https://importlib-metadata.readthedocs.io/en/latest/history.html


答案:

作者头像

我在 Google App Engine 上运行 Django 并遇到了同样的错误。

我查了源码,发现错误发生在一个内置的python函数中。

我更新到 Python 3.9 并解决了错误。

我最初使用的是 python 3.7。

我不知道这是否有帮助,但仅供参考。

作者头像

如果您使用 Redash 的某些分支,甚至是官方的 Redash ,您需要将其 importlib-metadata 固定到 4.12.0 中的 requirements_bundles.txt

作者头像

As importlib-metadata released v5.0.0, it removed the deprecated endpoint. So Use the older version and do not install the latest version.

!pip install importlib-metadata==4.13.0

Use this in the terminal/Collab to get an older version(v4.13.0).

作者头像

Adding to @Zach answer:

If you are using certain forks of Redash or even the official Redash, you need to pin its importlib-metadata to 4.13.0 in the requirements_bundles.txt.

If you are running on docker, don't forget to rebuild your docker containers.

docker-compose build 
docker-compose up -d