Python 将自己的参数传递给ryu代理应用程序

Python 将自己的参数传递给ryu代理应用程序,python,open-source,command-line-arguments,Python,Open Source,Command Line Arguments,我正在开发应用程序。该应用程序基本上是一个python脚本。ryu应用程序由ryu manager调用,如下所示 ryu管理器{filename} ryu manager采用了某些参数。我想知道是否有一种方法可以将参数传递给我的文件 python解析命令行选项的模块已经存在,但我不确定它是否能工作,因为我提供的所有参数都是由ryu manager使用的,而不是我的脚本 任何帮助都将不胜感激。我还没有尝试过,但是: “Ryu目前使用oslo.config.cfg进行命令行解析。 (ryu/cont

我正在开发应用程序。该应用程序基本上是一个python脚本。ryu应用程序由ryu manager调用,如下所示

ryu管理器{filename}

ryu manager采用了某些参数。我想知道是否有一种方法可以将参数传递给我的文件

python解析命令行选项的模块已经存在,但我不确定它是否能工作,因为我提供的所有参数都是由ryu manager使用的,而不是我的脚本


任何帮助都将不胜感激。

我还没有尝试过,但是:

“Ryu目前使用oslo.config.cfg进行命令行解析。 (ryu/contrib/oslo/config)。 树中有几个示例。ryu/app/tunnel\u port\u updater.py“

另见

Ryu的“入门”页面只是建议:


ryu管理器[--flagfile][generic/application-specific选项…]


我没有找到将参数传递给ryu控制器的方法。我使用的一种方法是将参数作为环境变量传递。例如,我有一个调用ryu manager的程序,需要向应用程序传递一个参数。我是这样做的:
ARG=value ryu manager app.py

这样做是一个4步过程。我将展示一个示例,在这个示例中,您可以读取参数,然后打印它们,但是您可以将它们分配给变量,或者通过引用此过程来执行任何操作


  • 创建一个.conf文件(例如params.conf)

  • 将以下代码添加到uuu init_uuu方法中。我对ryu附带的simple_switch_13.py执行了以下操作:

    from ryu import cfg
    :
    :
    class SimpleSwitch13(app_manager.RyuApp):
        def __init__(self, *args, **kwargs):
            super(SimpleSwitch13, self).__init__(*args, **kwargs)
               :
            CONF = cfg.CONF
            CONF.register_opts([
                cfg.IntOpt('param1_int', default=0, help = ('The ultimate answer')),
                cfg.StrOpt('param2_str', default='default', help = ('A string')),
                cfg.ListOpt('param3_list', default = None, help = ('A list of numbers')),
                cfg.FloatOpt('param4_float', default = 0.0, help = ('Pi? Yummy.'))])
    
            print 'param1_int = {}'.format(CONF.param1_int))
            print 'param2_str = {}'.format(CONF.param2_str))
            print 'param3_list = {}'.format(CONF.param3_list))
            print 'param4_float = {}'.format(CONF.param4_float))
    
  • 运行脚本

    ryu-manager paramtest.py --config-file [PATH/TO/FILE/params.conf]
    
  • 利润


  • 在整理我的答案时,我引用了以下内容,它们可以提供更多细节(比如oslo.config的东西,在遇到这个问题之前我从未听说过)

    有关oslo.config的更多信息:


    Ryu关于此问题的电子邮件链:

    这不会起作用,因为在调用应用程序时,使用配置选项提供的应用程序中的所有示例都不会从命令行初始化。
    ryu-manager paramtest.py --config-file [PATH/TO/FILE/params.conf]