Ejecución de la aplicación web.py con opciones de cmd personalizadas

Me gustaría usar web.py para crear una interfaz http para una biblioteca más grande, que también proporciona un script de línea de comando que toma parámetros opcionales.

Cuando probé el ejemplo del tutorial web.py simple en combinación con optparse, tengo el problema de que web.py siempre toma el primer argumento cmd como puerto, que no es lo que quiero. ¿Hay alguna manera de decirle a web-py que no verifique los argumentos de la línea de comando? Aquí hay un ejemplo:

#!/usr/bin/env python
# encoding: utf-8
"""
web_interface.py: A simple Web interface

"""

import optparse
import web

urls = ("/.*", "hello")
app = web.application(urls, globals())

class hello:
    def GET(self):
        return 'Hello, world!\n'

if __name__ == "__main__":
    p = optparse.OptionParser()
    p.add_option('--test', '-t', help="the number of seed resources")
    options, arguments = p.parse_args()
    print options.test
    app.run()

... que quiero ejecutar de la siguiente manera:

python web_interface.py -t 10

preguntado el 03 de abril de 12 a las 20:04

Estaba teniendo un problema similar y lo resolvió editando. sys.argv para eliminar cadenas adicionales antes de que lleguen a la aplicación web.py según este respuesta. -

1 Respuestas

Es un poco complicado, pero supongo que podrías hacerlo:

import sys
...

if __name__ == "__main__":
    p = optparse.OptionParser()
    p.add_option('--test', '-t', help="the number of seed resources")
    options, arguments = p.parse_args()
    print options.test

    # set sys.argv to the remaining arguments after
    # everything consumed by optparse
    sys.argv = arguments

    app.run()

Respondido 03 Abr '12, 21:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.