El uso de la tela cruzada de Python para abrir un enlace: “objeto 'módulo' no tiene atributo 'Popen'” ¿Qué es?

StackOverflow https://stackoverflow.com/questions/3621432

Pregunta

He descargado e instalado Python 2.5.4 en mi equipo (mi sistema operativo es Windows XP ), descargado ‘Kit de desarrollo de software gafas App Engine’ y ha creado mi primera aplicación en Python, que era un directorio llamado holamundo que contenía un archivo pitón pequeña con el mismo nombre ( helloworld.py ). Estos son los contenidos de ese pequeño archivo:


print 'Content-Type: text/plain'
print ''
print 'Hello, world!' 

Cada vez que me encontré con esta aplicación de forma local en el ordenador con “Goggle Kit de desarrollo de software App Engine” , el navegador (Firefox) siempre me mostró una ventana blanca con Hola, mundo! escrito en él.

A continuación, he descargado Sarga y desempaquetado en holamundo directorio> Después de haber instalado correctamente la tela cruzada , yo era capaz de ejecutar algunos pequeños comandos de shell de la tela cruzada. Por ejemplo, podría dar vuelta a una página web por algún enlace:

text alt

Entonces quería realizar la misma operación directamente desde Python (es decir, por medio de la utilización de la tela cruzada de Python.) Aquí es lo que el página de documentación de la tela cruzada dice al respecto


de sarga Python API

El uso de extensiones Making TwillBrowser

sarga es esencialmente una cáscara delgada alrededor del paquete de mecanizar. Todos los comandos de sarga se implementan en el archivo commands.py y pyparsing hace el trabajo de análisis de la entrada y la convierte en comandos de Python (ver parse.py). trabajo shell interactivo y apoyo readline se implementa a través del módulo cmd (de la biblioteca estándar Python).

Uso de sarga de Python

Hay dos maneras bastante simple de usar sarga de Python. (Son compatibles entre sí, por lo que no tiene que elegir entre ellos;. Uso justo lo que sea apropiado)

La primera es simplemente importar todos los comandos en commands.py y utilizarlos directamente desde Python. Por ejemplo,

from twill.commands import *
go("http://www.python.org/")
showforms()

Esto tiene la ventaja de ser muy simple, así como estar atado directamente a la serie documentada de comandos en la referencia de comandos.


Así que decidí utilizar de esta manera. He eliminado el contenido anterior de helloworld.py y le dio el nuevo contenido:


from twill.commands import *
go("http://www.python.org/")
showforms()

Pero cuando intenté ejecutar ese archivo en mi ordenador con “Kit de desarrollo de software App Engine gafas” , el navegador, en lugar de representar los contenidos del sitio web www.python.org, me da un mensaje de error: 'módulo' de objetos tiene ningún atributo 'Popen'

text alt

Por favor, eche un vistazo a toda la página aquí .

Aquí están las tres últimas líneas de la página:


: 'módulo' objeto no tiene atributo 'Popen'

  args = ("'module' object has no attribute 'Popen'",)

  message = "'module' object has no attribute 'Popen'" 

Puede alguien, por favor, me explique lo que este atributo Popen se trata y lo que estoy haciendo mal aquí?

Gracias a todos de antemano.


Actualización 1

(esta actualización es mi respuesta ala segunda respuesta se proporciona a continuación por leoluk )

Hola, leoluk !!!

He intentado hacerlo de esta manera:

config use_tidy 0
from twill.commands import *
go("http://www.python.org/")

pero que no funcionó. He recibido este mensaje de error:

<type 'exceptions.SyntaxError'>: invalid syntax (helloworld.py, line 1)
      args = ('invalid syntax', (r'E:\helloworld\helloworld.py', 1, 15, 'config use_tidy 0\n'))
      filename = r'E:\helloworld\helloworld.py'
      lineno = 1
      message = ''
      msg = 'invalid syntax'
      offset = 15
      print_file_and_line = None
      text = 'config use_tidy 0\n'

(Se puede ver toda la página AQUÍ )

¿Tiene alguna idea de lo que significa y lo que salió mal?

¿Fue útil?

Solución

  

El programa ordenado hace un trabajo agradable de   producir HTML correcto del destrozado,   rotos, páginas Web eeevil. Por defecto,   sarga se ejecutará a través de las páginas ordenada   antes de procesarlos. Este es el por   por defecto porque las bibliotecas de Python   que analizar HTML son muy malos   se trata de HTML incorrecto, y la voluntad   menudo devolver resultados incorrectos en   páginas Web "mundo real".

     

Para desactivar esta función, set config do_run_tidy 0.

Otros consejos

no se puede usar cualquier cosa en el motor de Google App. sarga usos no cosas disponibles en Google App Engine de trabajo. Así sarga no se admite totalmente por el motor de aplicación.

En particular, el código está intentando llamar a un comando externo, tidy, y llamar a comandos externos en el motor de aplicación no funciona.

creo que debería usar mechanize directamente. Sarga se comunica con el sistema de una manera que no es compatible con Google App Engine.

import mechanize

browser = mechanize.Browser()

browser.open('http://www.python.org')

for f in browser.forms():
    print f # you'll have to extend it
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top