0

我在目录“ my_application ”中创建了我的GAE应用程序。在这个目录中,我创建了一个 .py 文件并将其命名为“ my_scrypt ”。

my_scrypt ”开头的内容如下:


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

然后我在我的机器( Windows XP )上使用“ GAE Launcher ”在已安装的浏览器(Mozilla FireFox )上本地运行它——一切都很好——我可以在屏幕上看到那句话(“这是我的第一个应用程序”)。

然后我将这个应用程序部署到GAE(再次借助“ GAE Launcher ”)——一切都很好——我可以在屏幕上看到相同的句子。

然后我稍微改变了“ my_scrypt ”的内容:


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

下载twill0.9(从这里),从那里选择并复制“ twill ”文件夹,并将其粘贴到“ my_application ”目录中。

当我在本地(使用“ GAE Launcher ”)运行这个新应用程序时,一切都很好 - 我可以在屏幕上看到yahoo.com链接列表,但是当我将此应用程序上传到GAE时,我只收到一条错误消息。

为什么会这样?我不认为是因为这里twill使用的mechanize版本太旧了——“ my_script ”中的代码太简单了,任何版本的mechanize都必须能够处理。

GAE是否完全接受斜纹(作为外部模块)?

您可以在正下方 (↓) 的“更新 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

斜纹正在尝试导入“子流程”。这是一个用于生成线程的 Python 模块,它在 App Engine 上不可用。你要么需要看看你是否可以说服 Twill 在不产生进程的情况下工作(可能通过修改代码),或者你需要使用 mechanize 或直接 urlfetch 。

于 2010-09-19T11:39:17.073 回答