0

我刚刚在 Mac OS X Big Sur 上升级到 Python 3.10。当我现在启动 shell 时,我得到一个错误

$ python manage.py shell
...
Traceback (most recent call last):
  File "/Users/davea/Documents/workspace/cbapp/manage.py", line 21, in <module>
    main()
  File "/Users/davea/Documents/workspace/cbapp/manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/django/core/management/base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/django/core/management/commands/shell.py", line 100, in handle
    return getattr(self, shell)(options)
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/django/core/management/commands/shell.py", line 40, in bpython
    bpython.embed()
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/bpython/__init__.py", line 43, in embed
    from .curtsies import main
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/bpython/curtsies.py", line 10, in <module>
    from .curtsiesfrontend.repl import BaseRepl
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/bpython/curtsiesfrontend/repl.py", line 34, in <module>
    from bpython.repl import (
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/bpython/repl.py", line 49, in <module>
    from .paste import PasteHelper, PastePinnwand, PasteFailed
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/bpython/paste.py", line 24, in <module>
    import requests
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/requests/__init__.py", line 63, in <module>
    from . import utils
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/requests/utils.py", line 29, in <module>
    from .cookies import RequestsCookieJar, cookiejar_from_dict
  File "/Users/davea/Documents/workspace/cbapp/venv/lib/python3.10/site-packages/requests/cookies.py", line 174, in <module>
    class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):
AttributeError: module 'collections' has no attribute 'MutableMapping'

我升级到 Django 的最新版本 3.2.9。很确定我的问题与升级有关,但不清楚错误的含义或如何修复它。

4

1 回答 1

1

我在请求模块的项目中遇到了同样的错误。似乎 MutableMapping 在层次结构中移动到额外的抽象类中,所以在python3.10/site-packages/requests/cookies.py 更改

class RequestsCookieJar(cookielib.CookieJar, collections.MutableMapping):

class RequestsCookieJar(cookielib.CookieJar, collections.abc.MutableMapping):
于 2021-12-16T00:57:43.727 回答