Как сделать исполняемый пакет из скрипта минимум inet Python? - PullRequest
0 голосов
/ 29 мая 2020

Как создать исполняемый пакет из минимального inet Python скрипта?

У меня есть минимальный inet скрипт пользовательской топологии python, который я должен сделать исполняемым в Linux работать там, где min inet не установлен.

Я сделал его исполняемым в ubuntu-Pyinstaller. Он отлично работает там, где установлен min inet , но не работает на других машинах, где min inet не установлен. При запуске исполняемого файла появляется следующая ошибка:

   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()

Сообщите, пожалуйста, как могу ли я сделать это min inet - python исполняемый пакет скрипта в Linux для работы на других машинах, где min inet не установлен?

Спасибо

...