Fa GAE accetta twill a tutti?
-
04-10-2019 - |
Domanda
Ho creato il mio GAE applicazione nella directory " my_application ". All'interno di questa directory ho creato un file .py e lo ha chiamato " my_scrypt ".
Il contenuto di " my_scrypt " in principio sono stati i seguenti:
print 'Content-Type: text/plain'
print ''
print 'This is my first application'
Poi mi sono imbattuto in locale sulla mia macchina ( Windows XP ) nel browser installato ( Mozilla FireFox ) con " GAE Launcher " - tutto è andato bene - ho potuto vedere quella frase ( " Questa è la mia prima applicazione ") sullo schermo.
Poi ho schierato questa applicazione per GAE (ancora una volta con l'aiuto di " GAE Launcher ") - tutto è andato bene ancora una volta - ho potuto vedere la stessa frase sullo schermo .
Poi ho cambiato il contenuto della " my_scrypt " un po ':
from twill.commands import *
config('use_tidy', '0')
go ("http://us.yahoo.com/")
showlinks()
" twill0.9 " (da qui ), ha scelto e copiato" strong>" cartella da lì, e incollato in "twill my_application " directory.
Quando ho eseguito questa nuova applicazione a livello locale (con " GAE Launcher ") tutto è andato bene - ho potuto vedere un elenco di yahoo.com i collegamenti sullo schermo, ma quando ho caricato questa applicazione per GAE , ho ricevuto solo un messaggio di errore.
Perché è così? Non credo che sia perché la versione di mechanize utilizzato da twill qui è troppo vecchio - il codice in " mio_script " è così semplice , qualsiasi versione di mechanize deve essere in grado di gestirlo.
La GAE accettare twill (come modulo esterno) a tutti?
È possibile visualizzare l'analisi dello stack dell'errore nella sezione di destra "Update 1" in basso (?).
UPDATE 1:
(Questo aggiornamento è la mia risposta a Nick)
Ciao, Nick. Ho controllato la console di amministrazione, ecco l'analisi dello stack:
<type 'exceptions.ImportError'>: No module named fcntl
Traceback (most recent call last):
File "/base/data/home/apps/silkybutton/1.344911014283513184/bumper.py", line 1, in <module>
from twill.commands import *
File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/__init__.py", line 52, in <module>
from shell import TwillCommandLoop
File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/shell.py", line 9, in <module>
from twill import commands, parse, __version__
File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/commands.py", line 70, in <module>
from browser import TwillBrowser
File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/browser.py", line 17, in <module>
from _browser import PatchedMechanizeBrowser
File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/_browser.py", line 9, in <module>
from utils import FixedHTTPBasicAuthHandler, FunctioningHTTPRefreshProcessor
File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/utils.py", line 12, in <module>
import subprocess
File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/other_packages/subprocess.py", line 378, in <module>
import fcntl
Soluzione
Twill sta cercando di 'sottoprocesso' importazione. Questo è un modulo Python per la deposizione delle uova le discussioni, e non è disponibile su App Engine. Potrete sia necessario vedere se si può convincere Twill di lavoro senza la deposizione delle uova processi (probabilmente modificando il codice), o avrete bisogno di utilizzare mechanize o semplicemente UrlFetch direttamente.