首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解将模型文件读入PySD时出现的解析错误

了解将模型文件读入PySD时出现的解析错误
EN

Stack Overflow用户
提问于 2016-09-30 23:17:58
回答 2查看 332关注 0票数 0

当我尝试使用Python的PySD包读取Vensim模型文件(.mdl)时,收到以下错误消息。

我的代码是:

代码语言:javascript
复制
import pysd
import os

os.chdir('path/to/model_file')

model = pysd.read_vensim('my_model.mdl')

我收到的错误是:

代码语言:javascript
复制
Traceback (most recent call last):
  Python Shell, prompt 13, line 1
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pysd/pysd.py", line 53, in read_vensim
    py_model_file = translate_vensim(mdl_file)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pysd/vensim2py.py", line 673, in translate_vensim
    entry.update(get_equation_components(entry['eqn']))
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pysd/vensim2py.py", line 251, in get_equation_components
    tree = parser.parse(equation_str)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/parsimonious/grammar.py", line 123, in parse
    return self.default_rule.parse(text, pos=pos)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/parsimonious/expressions.py", line 110, in parse
    node = self.match(text, pos=pos)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/parsimonious/expressions.py", line 127, in match
    raise error
parsimonious.exceptions.ParseError: Rule 'subscriptlist' didn't match at '' (line 1, column 21).

我已经搜索了这个特定的错误,但是我找不到关于'subscriptlist‘的失败匹配规则的太多信息。

我很感谢你的见解。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-10-19 02:28:45

好消息是您的代码没有任何错误。=) (尽管您也可以在.read_vensim调用中只包含文件的路径,如果您不想更改目录的话)。

在这种情况下,有几种可能会导致这个问题。一种情况是,如果模型文件是使用足够旧的Vensim版本创建的,则语法可能与当前解析器的设计目标不同。解决这个问题的一种方法是更新Vensim并在那里重新加载模型文件- Vensim将更新为当前语法。

如果您已经在使用Vensim的最新版本(解析器是使用Vensim 6.3E的语法开发的),那么解析错误可能是由于尚未包含的特性造成的。下标仍然存在一些悬而未决的问题,您可以阅读有关herehere的内容)。

票数 0
EN

Stack Overflow用户

发布于 2016-10-19 22:43:24

如果你没有使用下标,你可能在解析器中发现了一个bug。如果是这样的话,最好的方法是在github issue tracker中为该项目创建一个报告。您发布的堆栈跟踪表明错误发生在文件的第一行,并且错误与公式右侧的解析方式有关。您可以在错误报告中包含前几行,以帮助我重新创建问题。我将在我们不断增长的test suite中添加一个案例,这样我们就可以确保它不会成为未来的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39794851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档