在NS-3中安装可视化工具pyviz的一些问题的解决
PyViz是一个用Python开发的在线ns-3可视化工具。
1.先安装依赖包:
sudo apt-get install python-dev python-pygraphviz python-kiwi python-pygoocanvas python-gnome2 python-gnome2-desktop-dev python-rsvg
或者
sudo apt-get install python-dev python-pygraphviz python-kiwi python-pygoocanvas python-gnome2 gir1.2-goocanvas-2.0 python-rsvg
若出现apt-get install E: 无法定位软件包问题,这里提供两种办法。
方法1:用root权限安装依赖
切换到root权限:
sudo -s
输入密码,就可以切换到root权限了
然后就可以安装依赖了
参考链接
方法2:添加源:
编辑/etc/apt/sources.list文件,添加源 deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse 即可。
步骤如下:
1)编辑sources.list :
sudo vim /etc/apt/sources.list
若出现sudo vim找不到命令,则是没有安装vim。如下安装即可:
sudo apt-get install vim-gtk
2)添加源: 在sources.list文件末尾添加
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse
(备注:可以试试把链接改为:deb http://archive.ubuntu.com/ubuntu/ pool/trusty main universe restricted multiverse。这个改链接地址的方法没尝试过,只是在打开链接的时候发现trusty main universe restricted multivers这四个文件夹在pool文件夹下面)
3)保存并退出
:wq
若出现 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
可以使用aptitude安装依赖,aptitude可以进行智能安装。
先安装aptitude:
sudo apt-get install aptitude`
然后使用aptitude安装需要的依赖包:
sudo aptitude install <package name>
aptitude会自动搜寻并下载相关的依赖库。
2.安装‘交互式Python’,以便在后面的可视化界面(the visualizerGUI:)中使用控制按钮:
sudo apt-get install ipython
3.再重新编译:
sudo ./build.py --enable-examples
编译完成后,可以看到visualizer模块已经成功编译。
编译完成
ps:使用方法: 以命令行参数的形式调用,只要程序中一下语句(需加在创建节点之前):
CommandLine cmd;
cmd.Parse (argc,argv);
运行程序时加入参数 --vis;
比如:sudo ./waf --run scratch/myfirst --vis
另外,两个小的点:
1)若遇到如下问题:
…
No visualization support (No module named _gi_cairo).
No visualization support (No module named _gi_cairo).
Traceback (most recent call last):
File “”, line 2, in
File “/home/w/tarballs/ns-allinone-3.29/ns-3.29/src/visualizer/visualizer/core.py”, line 1847, in start
import sys
RuntimeError: maximum recursion depth exceeded while calling a Python object
安装gi.cairo即可解决:
sudo apt-get install gi.cairo
2)若–vis报错:
AttributeError: ‘gi.repository.GooCanvas’ object has no attribute 'LineDash’
解决办法:
将src/visualizer/visualizer/core.py中第528行的
line_dash=GooCanvas.LineDash([10.0, 10.0 ])
更改为
line_dash=GooCanvas.CanvasLineDash.newv([10.0, 10.0 ])
即可解决。
(这段代码的修改解决了模拟的时候没有节点的情况,一般用viz模拟first是有节点的,但是模拟second的时候,就不一定了。)