El uso de la tela cruzada de Python para abrir un enlace: “objeto 'módulo' no tiene atributo 'Popen'” ¿Qué es?
-
26-09-2019 - |
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:
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'
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?
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