Python RYU软件定义网络中的回溯(最近一次呼叫)错误
我得到以下错误: 回溯(最近一次呼叫最后一次): 文件“/ryuLinearTopo.py”,第6行,在 类线性拓扑(拓扑): 文件“/ryuLinearTopo.py”,第32行,在LinearTopo中 simpleTest() simpleTest中第21行的文件“/ryuLinearTopo.py” 地形=线性地形(k=4) NameError:未定义全局名称“LinearTopo” 当我运行以下代码时:Python RYU软件定义网络中的回溯(最近一次呼叫)错误,python,traceback,sdn,topology,ryu,Python,Traceback,Sdn,Topology,Ryu,我得到以下错误: 回溯(最近一次呼叫最后一次): 文件“/ryuLinearTopo.py”,第6行,在 类线性拓扑(拓扑): 文件“/ryuLinearTopo.py”,第32行,在LinearTopo中 simpleTest() simpleTest中第21行的文件“/ryuLinearTopo.py” 地形=线性地形(k=4) NameError:未定义全局名称“LinearTopo” 当我运行以下代码时: #!/usr/bin/python from mininet.topo impo
#!/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.util import irange,dumpNodeConnections
from mininet.log import setLogLevel
class LinearTopo(Topo):
def __init__(self, k=2, **opts):
super(LinearTopo, self).__init__(**opts)
self.k = k
lastSwitch = None
for i in irange(1, k):
host = self.addHost('h%s' % i)
switch = self.addSwitch('s%s' % i)
self.addLink( host, switch)
if lastSwitch:
self.addLink( switch, lastSwitch)
lastSwitch = switch
def simpleTest():
topo = LinearTopo(k=4)
net = Mininet(topo)
net.start()
print "Dumping host connections"
dumpNodeConnections(net.hosts)
print "Testing network connectivity"
net.pingAll()
net.stop()
if __name__ == '__main__':
# Tell mininet to print useful information
setLogLevel('info')
simpleTest()
您的身份识别有问题。在代码中,所有方法都是在LinearTopo类中定义的。您希望在类的范围之外定义它们,如下所示:
#!/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.util import irange,dumpNodeConnections
from mininet.log import setLogLevel
class LinearTopo(Topo):
def __init__(self, k=2, **opts):
super(LinearTopo, self).__init__(**opts)
self.k = k
lastSwitch = None
for i in irange(1, k):
host = self.addHost('h%s' % i)
switch = self.addSwitch('s%s' % i)
self.addLink( host, switch)
if lastSwitch:
self.addLink( switch, lastSwitch)
lastSwitch = switch
def simpleTest():
topo = LinearTopo(k=4)
net = Mininet(topo)
net.start()
print "Dumping host connections"
dumpNodeConnections(net.hosts)
print "Testing network connectivity"
net.pingAll()
net.stop()
if __name__ == '__main__':
# Tell mininet to print useful information
simpleTest()
setLogLevel('info')
这个问题应该被标记为mininet,而不是Ryu,因为它严格来说是一个与mininet相关的问题