simplejson json AttributeError:“module”对象没有属性“dump”

时间:2018-02-18 20:00:17

标签: json matplotlib simplejson

我是编程新手,我对以下错误有疑问。 我正在使用python 2.7。,并且我有以下脚本来创建一个简单的图形(示例来自Eric Matthes的python CrashCourse):

    import matplotlib.pyplot as plt


    squares = [1,4,9,16,25]
    plt.plot(squares, linewitdth = 5)

    #Set chart title and lable axes.
    plt.title("Square Numbers", fontsize = 24)
    plt.xlabel("Value", fontsize = 14)
    plt.ylabel("Square of Value", fontsize = 14)

    # Set size of tick labels
    plt.tick_params(axis = "both", labelsize = 14)

    plt.show()

当我在WindowsPowerShell中运行此脚本时,出现以下错误:

Traceback (most recent call last): File "mpl_squares.py", line 1, in <module> 
import matplotlib.pyplot as plt
File "C:\Users\Roger\Anaconda2\lib\sitepackages\matplotlib\__init__.py, line 134, in <module> from ._version import get_versions
File "C:\Users\Roger\Anaconda2\lib\site-packages\matplotlib\_version.py", line 7, in <module> import json
File "C:\Users\Roger\Desktop\lpthw\json.py", line 7, in <module>
AttributeError: "module" object has no attribute "dump"

在其他脚本中,我在导入此模块时遇到了同样的问题,然后我找到了 通过“import simplejson”替换“import json”行的解决方案,并且运行良好。

这是我当时发现的解决方案:

json是simplejson,添加到stdlib中。但是由于json是在2.6中添加的,所以simplejson具有处理更多Python版本(2.4 +)的优势。

simplejson也比Python更频繁地更新,所以如果你需要(或想要)最新版本,如果可能的话,最好使用simplejson本身。

在我看来,一个好的做法是使用其中一个作为后备。

尝试:将simplejson导入为json 除了ImportError:import json

现在我查看错误,我得到的模块是“_version.py” 这是此文件中包含的信息:

   # This file was generated by 'versioneer.py' (0.15) from
   # revision-control system data, or from the parent directory name of an
   # unpacked source archive. Distribution tarballs contain a pre-generated 
   #copy
   # of this file.

   import json
   import sys

   version_json = '''
    {
     "dirty": false,
     "error": null,
     "full-revisionid": "26382a72ea234ee0efd40543c8ae4a30cffc4f0d",
     "version": "1.5.3"
    }
    '''  # END VERSION_JSON


   def get_versions():
        return json.loads(version_json)

问题: 您是否认为我必须通过替换修复_version.py模块中的内容 import json for import simplejson和在模块中添加的函数?

我正在考虑解决问题的方法,但是如果它让事情变得更糟,我不想修改_version.py中的任何内容。非常感谢您的意见和建议。

最好的问候

1 个答案:

答案 0 :(得分:1)

似乎导入了C:\Users\Roger\Desktop\lpthw\json.py而不是Python的内置json模块。

您是否以某种方式将该文件夹(C:\Users\Roger\Desktop\lpthw)添加到PYTHONPATH,例如使用sys.path.append()PYTHONPATH变量?详细了解how Python finds modules

simplejson修复的原因是它没有被其他同名模块覆盖。

尝试将C:\Users\Roger\Desktop\lpthw\json.py重命名为C:\Users\Roger\Desktop\lpthw\myjson.py,并尝试弄清楚lpthw文件夹如何将其转换为PYTHONPATH