如何制作Mininet Python脚本的可执行程序包?
我有mininet自定义拓扑python脚本,我需要在Linux上使其可执行。
ubuntu@sdnhubvm:~/Desktop/tp/dist[14:59]$ **sudo ./tp**
Traceback (most recent call last):
File "tp.py", line 5, in <module>
**ImportError: No module named mininet.net**
[26355] Failed to execute script tp
我可以使用以下命令成功运行脚本,而不会出现任何错误:
sudo python tp.py
#!/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()
请告知我如何在Linux中制作此mininet-python脚本可执行包以满足要求?
谢谢