Mit Twill von Python einen Link zu öffnen: „‚Modul‘Objekt hat kein Attribut‚Popen‘“ Was ist das?

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

Frage

Ich habe heruntergeladen und installiert Python 2.5.4 auf meinem Computer (mein O ist Windows XP ), heruntergeladen ‚Goggle App Engine Software Development Kit‘ und erstellt meine erste Anwendung in Python, die ein Verzeichnis mit dem Namen war Hello World , das eine kleine python-Datei mit dem gleichen Namen ( helloworld.py ) enthalten ist. Hier ist der Inhalt dieser kleinen Datei:


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

Jedes Mal, wenn ich lief diese Anwendung lokal auf meinem Computer mit „Goggle App Engine Software Development Kit“ , mein Browser (FireFox) zeigte mir immer ein weißes Fenster mit Hallo, Welt! in der es geschrieben.

Dann habe ich heruntergeladen Twill und entpackt es in Hello World Verzeichnis. Nachdem installiert Twill richtig , konnte ich einige kleine Befehle von Twill Shell auszuführen. Zum Beispiel habe ich auf eine Web-Seite durch eine Verbindung verwandeln könnte:

alt text

Dann wollte ich von Python direkt die gleiche Operation durchzuführen (dh durch Verwendung Twill von Python.) Hier ist, was die Twill Dokumentation Seite sagt über sie :


Köper Python API

Mit TwillBrowser Herstellung Erweiterungen

Twill ist im Wesentlichen eine dünne Schale um das mechanize Paket. Alle Twill-Befehle werden in der commands.py-Datei implementiert und pyparsing macht die Arbeit des Eingangs Parsen und es in Python-Befehle (siehe parse.py) zu konvertieren. Interaktive Rohbauarbeiten und Readline- Unterstützung werden über das cmd-Modul implementiert (von der Standard-Python-Bibliothek).

Mit Köper aus Python

Es gibt zwei recht einfache Möglichkeiten von Python Köper zu verwenden. (Sie sind miteinander kompatibel, so dass Sie nicht zwischen ihnen wählen müssen,. Nur Gebrauch je nach Fall)

Die erste besteht darin, einfach alle Befehle in commands.py zu importieren und verwenden Sie sie direkt aus Python. Zum Beispiel:

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

Dies hat den Vorteil, sehr einfach zu sein, sowie direkt mit dem dokumentierten Satz von Befehlen in der Befehlsreferenz gebunden.


Also habe ich beschlossen, diese Art und Weise zu nutzen. Ich löschte den vorherigen Inhalt von helloworld.py und gab ihm den neuen Inhalt:


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

Aber wenn ich versucht, diese Datei auf meinem Computer laufen mit „Goggle App Engine Software Development Kit“ , mein Browser, statt den Inhalt der www.python.org Website darstellt, gibt mir eine Fehlermeldung: 'Modul' Objekt hat kein Attribut 'Popen' :

alt text

Bitte nehmen Sie einen Blick auf die ganze Seite hier .

Hier sind die letzten drei Zeilen dieser Seite:


: 'Modul' Objekt hat kein Attribut 'Popen'

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

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

Kann jemand bitte erklären Sie mir, was dieses Popen Attribut dreht sich alles um, und was ich tue, falsch hier?

Vielen Dank im Voraus.


Update 1

(dieses Update ist meine Antwort aufdie zweite Antwort zur Verfügung gestellt unten durch leoluk )

Hallo, leoluk !!!

Ich habe versucht, es auf diese Weise tun:

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

, aber es hat nicht funktioniert. Ich erhielt diese Fehlermeldung:

<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'

(Sie können die ganze Seite hier )

Sie haben keine Ahnung, was es bedeutet und was falsch gelaufen ist?

War es hilfreich?

Lösung

  

Das ordentliche Programm ist eine schöne Aufgabe von   korrekten HTML Herstellung von zerfleischt,   gebrochen, Eeevil Webseiten. Standardmäßig,   Köper werden die Seiten durch ordentlich laufen   vor der Verarbeitung. Dies ist auf durch   Standard weil die Python-Bibliotheken   dass Parsing HTML sind sehr schlecht   mit falschen HTML zu tun, und Willen   Rückkehr oft falsche Ergebnisse an   "Reale Welt" Web-Seiten.

     

Um diese Funktion zu deaktivieren, set config do_run_tidy 0.

Andere Tipps

Sie können nicht alles in der Google App Engine. Twill Anwendungen stopfen auf Google App Engine zur Arbeit nicht zur Verfügung. So wird Köper nicht vollständig von App Engine unterstützt.

vor allem, wird der Code versucht, auf einen externen Befehl aufrufen, tidy und Aufruf externer Befehle in App Engine funktioniert nicht.

Ich glaube, Sie mechanize direkt verwenden sollten. Twill in Verbindung steht mit dem System in einer Weise, die von Google App Engine nicht unterstützt wird.

import mechanize

browser = mechanize.Browser()

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

for f in browser.forms():
    print f # you'll have to extend it
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top