matlab Smop和networkx之间的连接-根据networkx的版本不同出现不同的错误

jv4diomz  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(196)

我还是个新手,我在网上找到了一段matlab代码,我想用momop把它转换成python代码。我已经安装了Smop,但是当我试图运行它时,我得到了一个错误。
当我的networkx版本为1.11时,尝试运行smop main.m时出现以下错误

Traceback (most recent call last):
  File "C:\Users\IDABUK\Anaconda3\envs\smop\lib\site-packages\smop\main.py", line 66, in main
    G = resolve.resolve(stmt_list)
  File "C:\Users\IDABUK\Anaconda3\envs\smop\lib\site-packages\smop\resolve.py", line 54, in resolve
    u = G.node[n]["ident"]
AttributeError: 'DiGraph' object has no attribute 'node'
Errors: 1

安装更高版本的networkx(pip install networkx==2.0pip install networkx==2.5)时,出现以下错误:

Traceback (most recent call last):
  File "C:\Users\IDABUK\Anaconda3\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\IDABUK\Anaconda3\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\IDABUK\Anaconda3\Scripts\smop.exe\__main__.py", line 4, in <module>
  File "C:\Users\IDABUK\Anaconda3\lib\site-packages\smop\main.py", line 17, in <module>
    from . import resolve
  File "C:\Users\IDABUK\Anaconda3\lib\site-packages\smop\resolve.py", line 22, in <module>
    import networkx as nx
  File "C:\Users\IDABUK\Anaconda3\lib\site-packages\networkx\__init__.py", line 114, in <module>
    import networkx.generators
  File "C:\Users\IDABUK\Anaconda3\lib\site-packages\networkx\generators\__init__.py", line 6, in <module>
    from networkx.generators.classic import *
  File "C:\Users\IDABUK\Anaconda3\lib\site-packages\networkx\generators\classic.py", line 26, in <module>
    from networkx.algorithms.bipartite.generators import complete_bipartite_graph
  File "C:\Users\IDABUK\Anaconda3\lib\site-packages\networkx\algorithms\__init__.py", line 16, in <module>
    from networkx.algorithms.dag import *
  File "C:\Users\IDABUK\Anaconda3\lib\site-packages\networkx\algorithms\dag.py", line 14, in <module>
    from fractions import gcd
ImportError: cannot import name 'gcd' from 'fractions' (C:\Users\IDABUK\Anaconda3\lib\fractions.py)

我是从Python提示符窗口(Python电源外壳?)运行这个程序的。
有什么办法可以解决这个问题吗?我在网上找到的唯一解决方案是人们安装各种networkx版本--在这种情况下,这似乎不是我的解决方案,或者直接在代码中将‘node’改为‘node’,但我在matlab代码中找不到任何‘node’的示例。

gorkyyrv

gorkyyrv1#

对于未来寻找答案的人:我找不到这个问题的答案。
然而,它使用的是matlab2python。这就是我的工作方式:在终端中,我写道

git clone https://github.com/ebranlard/matlab2python
cd matlab2python
pip install -r requirements.txt

然后,我使用下面的代码来转换每个matlab脚本:

python matlab2python/matlab2python.py file.m -o file.py

相关问题