Utilizzando Twill da Python per aprire un collegamento: “oggetto 'modulo' non ha alcun attributo 'Popen'” Che cosa è?

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

Domanda

Ho scaricato e installato Python 2.5.4 sul mio computer (il mio sistema operativo è Windows XP ), scaricato ‘Goggle App Engine Software Development Kit’ e ha creato la mia prima applicazione in Python, che era una directory denominata HelloWorld che conteneva un piccolo file di pitone con lo stesso nome ( helloworld.py ). Ecco il contenuto di quel file di piccole dimensioni:


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

Ogni volta che mi sono imbattuto questa applicazione a livello locale sul mio computer con “Goggle App Engine Software Development Kit” , il mio browser (FireFox) sempre mi ha mostrato una finestra bianca con Ciao, mondo! scritto in esso.

Poi ho scaricato Twill e scompattato in HelloWorld di directory. Dopo aver installato correttamente Twill , sono stato in grado di eseguire alcuni piccoli comandi da shell saia. Per esempio, ho potuto girare ad una pagina web da parte di alcuni link:

alt text

Poi ho voluto per eseguire la stessa operazione direttamente da Python (cioè per mezzo di utilizzare saia da Python.) Qui è che la pagina di documentazione Twill dice in proposito :


di twill di Python API

Uso delle estensioni che fanno gli TwillBrowser

twill è essenzialmente un guscio sottile attorno al pacchetto Mechanize. Tutti i comandi twill sono implementati nel file commands.py, e pyparsing fa il lavoro di analisi input e la sua conversione in comandi Python (vedi parse.py). lavoro shell interattiva e supporto readline viene attuata tramite il modulo cmd (dalla libreria standard Python).

Utilizzo di saia da Python

Ci sono due modi abbastanza semplice da usare twill da Python. (Sono compatibili con l'altro, in modo che non c'è bisogno di scegliere tra di loro;. Solo l'uso a seconda del caso)

Il primo è quello di importare semplicemente tutti i comandi in commands.py e utilizzarli direttamente da Python. Ad esempio,

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

Questo ha il vantaggio di essere molto semplice, oltre ad essere legato direttamente alla serie documentata di comandi nel riferimento comandi.


Così ho deciso di usare in questo modo. Ho cancellato il contenuto precedente della helloworld.py e lo diede il nuovo contenuto:


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

Ma quando ho cercato di eseguire il file sul mio computer con “Goggle App Engine Software Development Kit” , il mio browser, invece di rappresentare i contenuti di www.python.org sito web, mi dà un messaggio di errore: oggetto 'modulo' non ha alcun attributo 'popen' :

alt text

Si prega di tenere uno sguardo alla intera pagina qui .

Qui ci sono le ultime tre righe in questa pagina:


: 'modulo' oggetto non ha attributo 'Popen'

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

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

Può qualcuno, per favore, mi spieghi che cosa questo attributo Popen è tutto e che cosa sto facendo male qui?

Grazie a tutti in anticipo.


Aggiorna 1

(questo aggiornamento è la mia risposta allala seconda risposta fornita in appresso con leoluk )

Ciao, leoluk !!!

Ho provato a farlo in questo modo:

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

, ma non ha funzionato. Ho ricevuto questo messaggio di errore:

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

(Si può vedere l'intera pagina qui )

Hai la minima idea di cosa significhi e cosa è andato storto?

È stato utile?

Soluzione

  

Il programma ordinata fa un lavoro piacevole di   producendo correttezza del codice HTML da storpiato,   rotti, pagine Web eeevil. Per impostazione predefinita,   twill verrà eseguito pagine attraverso ordinata   prima di elaborarli. Questo è attiva per   default, perché le librerie Python   che parse HTML sono molto male   si tratta di errato HTML, e la volontà   Spesso restituire risultati non corretti su   "Mondo reale" le pagine Web.

     

Per disattivare questa funzione, insieme config do_run_tidy 0.

Altri suggerimenti

non è possibile utilizzare qualsiasi cosa nel motore di Google App. usi Twill non roba disponibili su Google App Engine per il lavoro. Quindi twill non è pienamente supportato dal motore di app.

in particolare, il codice sta tentando di chiamare un comando esterno, tidy, e chiamando comandi esterni nel motore di app non funziona.

Penso che si dovrebbe usare mechanize direttamente. Twill comunica con il sistema in un modo che non è supportato da 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top