无法导入名称 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。
您应该将extdirect
的providers.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 无法导入名称路径”?