无法导入名称 simplejson - 安装 simplejson 后

Posted

技术标签:

【中文标题】无法导入名称 simplejson - 安装 simplejson 后【英文标题】:Cannot import name simplejson - After installing simplejson 【发布时间】:2015-03-18 21:26:57 【问题描述】:

我有 Django 版本 1.7 和 Python 版本 2.7.5 - 我使用 pip install simplejson 和 apt-get install python-simplejson 命令解决了这个问题,但它仍然向我显示了这个异常。 Django 和 Python 之间是否存在兼容性问题,或者解决此异常的方法是什么:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/root/test_env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/root/test_env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
    django.setup()
  File "/root/test_env/local/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/root/test_env/local/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/root/test_env/local/lib/python2.7/site-packages/django/apps/config.py", line 123, in create
    import_module(entry)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/root/test_env/local/lib/python2.7/site-packages/extdirect.django-0.3-py2.7.egg/extdirect/django/__init__.py", line 3, in <module>
    from providers import ExtRemotingProvider, ExtPollingProvider
  File "/root/test_env/local/lib/python2.7/site-packages/extdirect.django-0.3-py2.7.egg/extdirect/django/providers.py", line 4, in <module>
    from django.utils import simplejson
ImportError: cannot import name simplejson

【问题讨论】:

你为什么要从django.utils导入simplejson @dmg - simplejson 曾经(不久前)在那里; ) @ThomasOrozco 我想已经有一段时间了:D @dmg 是的,它从 1.5 开始就消失了。他们的代码可能已经过时了。 【参考方案1】:

您的代码与您使用的 Django 版本不兼容。

Django 过去在django.utils 中附带simplejson,但这是removed in Django 1.5:

django.utils.simplejson

由于 Django 1.5 放弃了对 Python 2.5 的支持,我们现在可以依赖 json 模块在 Python 的标准库中可用,所以我们已经 删除了我们自己的 simplejson 副本。您现在应该改为导入 json django.utils.simplejson.

很遗憾,此更改可能会产生不必要的副作用,因为 simplejson 版本之间的不兼容问题 – 请参阅 向后不兼容的更改部分。如果您依赖添加的功能 将 simplejson 变成 Python 的 json 后,你应该导入 明确的 simplejson。


您应该将extdirectproviders.py 中的代码更新为import json,或者使用它设计的Django 版本。

【讨论】:

我可以安装 Django 1.5 版来解决这个问题吗? @TameenMalik 是的,pip install django==1.5.12。但是,请注意不再支持 Django 1.5。您真的应该考虑更新您的代码以使用更新版本的 Django。 import simplejson 代替from django.utils import simplejson 不是很好吗? @guival 如果您可以更新代码,那么您不妨使用 json 模块(这已经在答案中了)。

以上是关于无法导入名称 simplejson - 安装 simplejson 后的主要内容,如果未能解决你的问题,请参考以下文章

我必须安装啥才能解决找不到 GtkSource 的任何类型库,无法导入:GtkSourceView,无法导入名称 GtkSource

安装 iPython:“ImportError 无法导入名称路径”?

ImportError:无法导入名称“GeoIP”

从脚本导入已安装的包会引发“AttributeError:模块没有属性”或“ImportError:无法导入名称”

ImportError:无法导入名称 QtGui

python安装simplejson