在 pyvis 中我总是收到此错误:“AttributeError:'NoneType'对象没有属性'render'”

Tom*_*urg 15 python attributeerror networkx python-3.x pyvis

我想使用最新版本的 pyvis 和 python 版本 3.9.6 进行网络可视化:

from pyvis.network import Network
g = Network()
g.add_node(0)
g.add_node(1)
g.add_edge(0, 1)
g.show('test.html')
Run Code Online (Sandbox Code Playgroud)

每次执行时g.show()我都会收到此错误:

Traceback (most recent call last):
  File "/Users/tom/Library/Mobile Documents/com~apple~CloudDocs/Projekte/Coding_/f1 standings/test2.py", line 3, in <module>
    g.show('nx.html')
  File "/Users/tom/Library/Python/3.9/lib/python/site-packages/pyvis/network.py", line 546, in show
    self.write_html(name, open_browser=False,notebook=True)
  File "/Users/tom/Library/Python/3.9/lib/python/site-packages/pyvis/network.py", line 515, in write_html
    self.html = self.generate_html(notebook=notebook)
  File "/Users/tom/Library/Python/3.9/lib/python/site-packages/pyvis/network.py", line 479, in generate_html
    self.html = template.render(height=height,
AttributeError: 'NoneType' object has no attribute 'render'
Run Code Online (Sandbox Code Playgroud)

我尝试更新 pyvis,更改了代码中的各种详细信息,并导入了所有 pyvis.network,但没有任何结果。

小智 27

Network .show()在 0.3.2 中,由于某种原因,该函数被推送到 pip notebook=True,即使Network()构造函数具有notebook=False默认值,也是如此。我更改了我的显示功能并指定notebook=False然后它再次正常工作。

https://github.com/WestHealth/pyvis/blob/ccb7ce745ee4159ce45eac70b9848ab965fc0906/pyvis/network.py#L537

from pyvis.network import Network
g = Network()
g.add_node(0)
g.add_node(1)
g.add_edge(0, 1)
g.show('test.html', notebook=False)
Run Code Online (Sandbox Code Playgroud)


小智 10

可能您已经安装了 0.3.2 版本。我今天遇到了同样的问题,降级到 0.3.1 对我有帮助

  • 这对我有用!要安装旧版本:`pip install pyvis==0.3.1` (3认同)

小智 6

我能够解决类似的问题,我在 Jupyter Notebook 中使用 networkx 运行 pyvis。

最小的代码示例

from pyvis import network as net
import networkx as nx

#%%
g=net.Network()
nxg = nx.complete_graph(5)
g.from_nx(nxg) 

#%%
g.show("example.html")
Run Code Online (Sandbox Code Playgroud)

错误

AttributeError: 'NoneType' object has no attribute 'render'
Run Code Online (Sandbox Code Playgroud)

解决方案

在初始化网络时,我添加了notebook=True,这解决了我的问题。新代码是:

from pyvis import network as net
import networkx as nx

#%%
g=net.Network(notebook=True)
nxg = nx.complete_graph(5)
g.from_nx(nxg)

#%%
g.show("example.html")
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


小智 0

默认模板是从 pyvis 包的templates/template.html文件加载的。您可以确保在磁盘上正确找到此模板,或者您可以使用手动设置自己的模板Network().set_template

  • 您能更详细地解释一下如何将 self.template 默认为 none 吗?Network().set_template 的参数需要以字符串形式给出的文件路径。默认情况下, self.template 也等于 None 。感谢您的帮助! (3认同)