【问题标题】:ImportError: cannot import name SortedDict - only on Python 2.7, not 2.6ImportError:无法导入名称 SortedDict - 仅在 Python 2.7 上,而不是 2.6
【发布时间】:2016-04-09 09:35:38
【问题描述】:

我正在尝试启动并运行一个 Django 应用程序。这些库有点过时(目前在 Django 1.4 上)。

当我尝试使用 python 2.6 时,它或多或少地工作了,但是当我使用 python 2.7 更改为 virtualenv 时,我得到了错误:

Unhandled exception in thread started by <function wrapper at 0x7f057b17c320>
Traceback (most recent call last):
File "/home/colin/software/virtualenvs/barshool/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "/home/colin/software/virtualenvs/barshool/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run
autoreload.raise_last_exception()
File "/home/colin/software/virtualenvs/barshool/lib/python2.7/site-packages/django/utils/autoreload.py", line 249, in raise_last_exception
six.reraise(*_exception)
File "/home/colin/software/virtualenvs/barshool/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "/home/colin/software/virtualenvs/barshool/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/colin/software/virtualenvs/barshool/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/home/colin/software/virtualenvs/barshool/lib/python2.7/site-packages/django/apps/config.py", line 90, in create
module = import_module(entry)
File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/colin/software/virtualenvs/barshool/lib/python2.7/site-packages/transmeta/__init__.py", line 7, in <module>
from django.utils.datastructures import SortedDict
ImportError: cannot import name SortedDict

我使用相同的需求文件设置了 virtualenvs。

可能导致此问题的版本之间有什么区别?

【问题讨论】:

    标签: django python-2.7 python-2.6


    【解决方案1】:

    SortedDictremoved in Django 1.9。确保您在新虚拟环境中安装了与旧虚拟环境相同版本的 Django。

    如果使用 SortedDict 的是您自己的代码,长期的解决方法是更新代码以使用 Python 2.7 中添加的 collections.OrderedDict。在您的情况下,导入错误似乎来自第三方应用程序,您必须更新或替换它才能使代码与 Django 1.9 一起使用。

    【讨论】:

    • 谢谢,现在我检查了一下,我确实设法在那个 virtualenv 中安装了 1.9 版。根据需求文件,我以为我有 1.4.5。
    【解决方案2】:

    这似乎是一个持续存在的错误。在使用 django==1.11.1djangorestframework==3.9.1 时意味着同样的问题。特别是 djangorestframework (drf) 正在导入 sortedDict,所以我改为更新了 drf。此时的最新版本是djangorestframework==3.10.3from the python foundation。这次 drf 升级解决了我的挑战。

    注意:我在 Ubuntu 18.04.3 LTS 上与 python 3.6.8 合作(以防万一您需要这些细节)

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      相关资源
      最近更新 更多