0

ディレクトリ「 my_application 」にGAEアプリケーションを作成しました。このディレクトリ内に .py ファイルを作成し、「my_scrypt」という名前を付けました。

最初の「 my_scrypt 」の内容は次のとおりです。


print 'Content-Type: text/plain'
print ''
print 'This is my first application'

次に、自分のマシン ( Windows XP ) のインストール済みブラウザー ( Mozilla FireFox ) で " GAE Launcher "を使用してローカルで実行しました。

次に、このアプリケーションをGAEにデプロイしました (再び " GAE Launcher " を使用) - すべてが正常に戻りました - 画面に同じ文が表示されました。

次に、「my_scrypt」の内容を少し変更しました。


from twill.commands import *
config('use_tidy', '0')
go ("http://us.yahoo.com/")
showlinks()

twill0.9をダウンロードし(hereから)、そこから「 twill」フォルダーを選択してコピーし、「 my_application」ディレクトリに貼り付けました。

この新しいアプリケーションをローカルで (「GAE Launcher 」を使用して) 実行したところ、すべて問題ありませんでした。画面にyahoo.comのリンクのリストが表示されましたが、このアプリケーションをGAEにアップロードすると、エラー メッセージしか表示されませんでした。

なぜそうなのですか?ここでtwillが使用しているmechanizeのバージョンが古すぎるためではないと思います。「 my_script」のコードは非常に単純なので、どのバージョンのmechanizeでも処理できる必要があります。

GAEは(外部モジュールとして)ツイルを受け入れますか?

エラーのスタック トレースは、すぐ下の「Update 1」セクション (↓) で確認できます。


更新 1:

(この更新はニックへの私の答えです)

こんにちは、ニック。管理コンソールを確認したので、スタック トレースを以下に示します。

<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

4

1 に答える 1

1

Twill は「サブプロセス」をインポートしようとしています。これは、スレッドを生成するための Python モジュールであり、App Engine では使用できません。プロセスを生成せずに (おそらくコードを変更して) Twill が動作するように説得できるかどうかを確認するか、直接 mechanize または単純に urlfetch を使用する必要があります。

于 2010-09-19T11:39:17.073 に答える