我在目录“ 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