0

我正在尝试整合 JNC 和 Pyang。正如 jnc 步骤所述,我已将jnc.py复制到PYANG_HOME/pyang/plugins. 我尝试使用以下命令生成simple.yangjava$JNC_HOME/examples/yang

pyang -f jnc --jnc-output src/gen/simple yang/simple.yang

面临以下错误,

Traceback (most recent call last):
  File "D:/tools/pyang-master/bin/pyang", line 434, in <module>
    run()
  File "D:/tools/pyang-master/bin/pyang", line 408, in run
    emit_obj.emit(ctx, modules, fd)
  File "C:\Users\Siva\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pyang-1.7-py3.5.egg\pyang/plugins\jnc.py", line 208, in emit
    if module_stmt in (imported + included):
TypeError: unsupported operand type(s) for +: 'map' and 'map'

任何人都面临过这种问题。请让我知道如何解决这个问题。

4

1 回答 1

0

问题在于地图实施:

map在 Python-3 中返回一个迭代器,而map在 Python 2 中返回一个列表:

蟒蛇2:

>>> type(map(abs, [43, -12, 13, -14]))
<type 'list'>

蟒蛇 3:

>>> type(map(abs, [99, -52, 32, -34, 13]))
<class 'map'> 

您可以编辑文件 jnc.py 并更改代码如下:

for (module_stmt, rev) in self.ctx.modules:
    if module_stmt in (imported + included):
        module_set.add(self.ctx.modules[(module_stmt, rev)])


for (module_stmt, rev) in self.ctx.modules:
     if module_stmt in (included):
         module_set.add(self.ctx.modules[(module_stmt, rev)])
     if module_stmt in (imported):
         module_set.add(self.ctx.modules[(module_stmt, rev)])
于 2017-08-28T11:19:53.690 回答