2013-07-19 302 views
0

我希望能够使用模块jsonschemaiter_errors功能。我导入了模块jsonschema,但无法访问iter_errors。为什么我无法导入模块?

我怀疑这可能是因为该模块需要更新,如果是这种情况,我该如何做?

我试着重新安装它,python提示我使用命令'升级',我不确定如何使用。

Requirement already satisfied (use --upgrade to upgrade): jsonschema in /Library/Python/2.7/site-packages 
Cl 

谢谢!


RE评论:

我下面的代码使用here,从验证器类调用该函数:

EX CODE:

>>> schema = { 
...  "type" : "array", 
...  "items" : {"enum" : [1, 2, 3]}, 
...  "maxItems" : 2, 
... } 
>>> v = Draft3Validator(schema) 
>>> for error in sorted(v.iter_errors([2, 3, 4]), key=str): 
...  print(error.message) 
4 is not one of [1, 2, 3] 
[2, 3, 4] is too long 

我的代码: 其中x是样本JSON

with open('gc_schema_test.json', 'r') as handle: 
    schema = json.load(handle) 

v = Draft3Validator(schema) 
for error in sorted(v.iter_errors(x), key=str): 
    print(error.message) 
+1

你试图用来访问'iter_errors'的实际代码是什么? 'import'只是将模块名称导入到您的名称空间中;你最需要'jsonschema.iter_errors'。 – geoffspear

+0

这是否回答你的问题? – goldisfine

回答

1

因此,您可以通过传递--upgrade(或-U)来通过pip更新模块。

pip install -U jsonschema 

截至今天的最新版本是2.0.0。

iter_errors已经存在很长一段时间了)。

一旦您有最新版本,请确保与示例一样显示您创建* validator *实例来调用它。这是验证者的一种方法,而不是一种功能。

所以,如果你

from jsonschema import Draft3Validator 

你的榜样应该产生你想要什么。