Python RYU软件定义网络中的回溯(最近一次呼叫)错误

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

我得到以下错误:

回溯(最近一次呼叫最后一次):

文件“/ryuLinearTopo.py”,第6行,在

类线性拓扑(拓扑):

文件“/ryuLinearTopo.py”,第32行,在LinearTopo中

simpleTest()

simpleTest中第21行的文件“/ryuLinearTopo.py”

地形=线性地形(k=4)

NameError:未定义全局名称“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

        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相关的问题