python - 如何制作 Mininet Python 脚本的可执行包?
问题描述
如何制作 Mininet Python 脚本的可执行包?
我有 mininet 自定义拓扑 python 脚本,我需要在 Linux 中使可执行文件在未安装 mininet 的情况下工作。
我使它在 ubuntu-Pyinstaller 中可执行。它在安装了 mininet 的地方工作正常,但在没有安装 mininet 的其他机器上不能工作。在运行可执行文件时,它给出以下错误:
pradeepkumar@ubuntu:~/Desktop/tp4$ sudo python tp.py
Traceback (most recent call last):
File "tp.py", line 5, in <module>
from mininet.net import Mininet
ImportError: No module named mininet.net
pradeepkumar@ubuntu:~/Desktop/tp4$ cd dist/
pradeepkumar@ubuntu:~/Desktop/tp4/dist$ ls
tp
pradeepkumar@ubuntu:~/Desktop/tp4/dist$ sudo ./tp
*** Test Network Script
*** Creating nodes
Cannot find required executable mnexec.
Please make sure that Mininet is installed and available in your $PATH:
(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin)
Traceback (most recent call last):
File "tp.py", line 124, in <module>
File "tp.py", line 23, in TP
File "build/bdist.linux-x86_64/egg/mininet/node.py", line 85, in __init__
File "build/bdist.linux-x86_64/egg/mininet/node.py", line 657, in checkSetup
File "build/bdist.linux-x86_64/egg/mininet/node.py", line 665, in setup
File "build/bdist.linux-x86_64/egg/mininet/moduledeps.py", line 68, in pathCheck
NameError: global name 'exit' is not defined
[3874] Failed to execute script tp
pradeepkumar@ubuntu:~/Desktop/tp4/dist$
使用 NUITKA:
同样的问题,以及与上面完全相同的错误消息。
注意:我曾经在将包移动到另一台机器之前制作包的 tar.gz,然后在那里解压。
我尝试了他们用户手册中的所有命令以使其可执行但无法在第二台机器上运行......
nuitka.net/doc/user-manual.html
下面是脚本:
#!/usr/bin/python
from mininet.net import Mininet
from mininet.node import Node
from mininet.link import TCLink
from mininet.log import setLogLevel, info
from threading import Timer
from mininet.util import quietRun
from time import sleep
from mininet.cli import CLI
def TP(cname='controller', cargs='-v ptcp:'):
"Create network using Open vSwitch and ODL Controller in Mininet."
info( "*** Creating nodes\n" )
controller = Node( 'c0', inNamespace=False )
s1 = Node( 's1', inNamespace=False )
s2 = Node( 's2', inNamespace=False )
h1 = Node( 'h1' )
h2 = Node( 'h2' )
info( "*** Creating links\n" )
TCLink( h1, s1 )
TCLink( s1, s2 )
TCLink( s2, h2 )
info( "*** Configuring Hosts\n" )
h1.setIP( '192.168.100.1/24' )
h2.setIP( '192.168.100.2/24' )
info( "*** Starting network using Open vSwitch\n" )
s1.cmd( 'ovs-vsctl del-br dp0' )
s1.cmd( 'ovs-vsctl add-br dp0' )
s2.cmd( 'ovs-vsctl del-br dp1' )
s2.cmd( 'ovs-vsctl add-br dp1' )
controller.cmd( cname + ' ' + cargs + '&' )
for intf in s1.intfs.values():
print intf
print s1.cmd( 'ovs-vsctl add-port dp0 %s' % intf )
for intf in s2.intfs.values():
print intf
print s2.cmd( 'ovs-vsctl add-port dp1 %s' % intf )
# Note: controller is ODL
s1.cmd( 'ovs-vsctl set-controller dp0 tcp:127.0.0.1:6633' )
s2.cmd( 'ovs-vsctl set-controller dp0 tcp:127.0.0.1:6633' )
info( '*** Waiting for switches to connect with controller' )
while 'is_connected' not in quietRun( 'ovs-vsctl show' ):
sleep( 1 )
info( '.' )
info( '\n' )
info( "*** Running test\n" )
h1.cmdPrint( 'ping -c 10 ' + h2.IP() )
info( "*** Running iperf test Between h1 and h2\n" )
print "iperf: h1--s1--s2--h2"
h2.cmd('iperf -s &')
h1.cmdPrint('iperf -c 192.168.100.2 -t 10')
info( "*** Stopping network\n" )
controller.cmd( 'kill %' + cname )
s1.cmd( 'ovs-vsctl del-br dp0' )
s1.deleteIntfs()
s2.cmd( 'ovs-vsctl del-br dp1' )
s2.deleteIntfs()
info( '\n' )
if __name__ == '__main__':
global net
setLogLevel( 'info' )
info( '*** Test Network Script \n' )
Mininet.init()
TP()
请告知我如何使这个mininet-python 脚本在 Linux 中的可执行包可以在没有安装 mininet 的其他机器上工作?
谢谢
解决方案
推荐阅读
- javascript - HTML5 视频:如何关闭字幕
- batch-file - Copy file from multiple folder to a new folder - files are with the same name
- linux - 如何在 Windows 中安装“Make”命令
- python - 使用带有 Postgres 引擎的 AWS Aurora 数据库接收“fe_sendauth:未提供密码”错误,但仅在执行单元测试时
- python - Python Kivy:在弹出窗口中绑定命令执行命令
- javascript - Electron 和 Node.js 中的错误
- c++ - CGAL - 三角网格,返回面对面映射?
- angular - 调用 Bing 地图位置 REST 方法时出现 Angular HttpClient 问题
- python - 如何读取、修改标头并保存 .7 文件及其其余数据?
- c# - 如何在 Visual Studio 中对 HTML 元素进行后端编码?