You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止pyvis在Ubuntu终端默认启动elinks浏览器?

解决Pyvis自动启动CLI浏览器干扰Vi的问题

问题背景

在Ubuntu远程终端下使用Vi编辑器时,运行Pyvis代码生成网络可视化HTML文件时,会自动启动CLI浏览器elinks,即使手动退出,elinks仍在后台运行,不断弹出菜单干扰Vi的命令模式操作。尝试添加xdg-open命令后出现权限和参数错误。

错误原因

  1. nt.show()方法默认会在生成HTML文件后自动调用系统浏览器打开,远程终端无图形界面时,系统会 fallback 到CLI浏览器(如elinks),导致后台进程残留。
  2. 手动添加的os.system("xdg-open /dev/null foo.html")参数顺序错误,xdg-open不支持这种写法,同时远程终端无可用图形浏览器,触发一系列找不到浏览器的错误。

修复方案

核心修改:用write_html()替代show()

Pyvis的Network.write_html()方法仅负责生成HTML文件,不会自动调用浏览器,完全避免后台启动浏览器的问题。同时修正代码中的语法错误:

from pyvis.network import Network
import networkx as nx

g = nx.MultiGraph()

g.add_node(0, label='node 0', title='Node 1', shape='ellipse', size=125)
g.add_node(1, label='node 1', title='Node 2', shape='ellipse', size=125)
g.add_node(2, label='node 2', title='Node 3', shape='ellipse', size=125)

g.add_edge(0, 1, label='e1_1', title='e1_1', arrows="false")
g.add_edge(0, 1, label='e1_2', title='E1_2', arrows="false")
g.add_edge(0, 2, label='e2', title='E2', arrows="false")

nt = Network(directed=True)
nt.from_nx(g)
nt.set_edge_smooth('dynamic')

# 修正set_options中的语法错误:dynamic需要加引号
nt.set_options('''
    var options = {
        "nodes": {
            "size": 100
        },
        "edges": {
            "arrowStrikethrough": false,
            "color": {
                "inherit": false
            },
            "font": {
                "size": 3,
                "align": "top"
            },
            "smooth": "dynamic"
        }
    }
''')

# 仅生成HTML文件,不打开浏览器
nt.write_html('foo.html')

额外调整说明

  • 移除了多余的nt.show()调用,避免重复生成文件和触发浏览器。
  • 修正set_options中smooth: dynamic的语法错误,字符串类型的值需要用双引号包裹。
  • 删除无效的os.system调用,彻底规避xdg-open相关错误。

验证方法

运行修改后的代码:

$ python foo.py

此时只会在当前目录生成foo.html文件,不会启动任何浏览器,后台也不会残留elinks进程,Vi编辑器的操作不会再被干扰。

内容的提问来源于stack exchange,提问作者Quiescent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:30:28