我有这个问题而且它让我疯了!
所以我正在开发我的第一个真正的Google App Engine应用程序,我总是喜欢在编写测试时发现它们。
所以我有以下设置:
我有一个有鼻子,鼻子,网络测试和gaetestbed的virtualenv。它被称为porksvr。
我像这样激活我的virtualenv:
source porksvr/bin/activate
要运行鼻子我使用以下命令:
nosetests --with-gae --gae-lib-root /home/fs/gae
这给了我以下错误
DEBUG: Access to module file denied:
/home/fs/work/gaecode/porksvr/lib/python2.6/site-packages/webtest
所以一开始我觉得“好吧,鼻子在dev_appserver的'context'中运行应用程序,所以它不知道webtest”。
但是要确保我创建了一个新目录并添加了一个小型GAE应用程序。这只是3个文件:
-main.py
-app.yaml
-test_huh.py(导入webtest模块。)
现在让我感到困惑的是,这才有效。我运行了nosetests cmds,它实际上通过了我的测试。
所以我开始挖掘我的应用程序,找出可能有什么不同但我真的碰壁了。
我首先认为它可能是一个权限问题,因为错误说'访问...被拒绝',但我真的找不到任何特别的东西。接下来我想也许是因为我在virtualenv之前创建了我的应用程序,但我真的看不出这是怎么回事。
所以如果有人知道为什么会发生这种情况,我真的很感激。
答案 0 :(得分:6)
Nose-GAE有一些documented issues when you're using virtualenv。
您可以尝试使用nose的--without-sandbox
标记。
答案 1 :(得分:2)
非常好,经过几个小时的尝试后我才真正解决了我的问题。
使用以下开关--no-site-packages
创建virtualenv的原因是什么。显然我在我的系统Python中有一份webtest副本,不知何故给我的virtualenv带来了问题。当我尝试在我的virtualenv中安装webtest并且它已经存在时,我应该注意到它。
仍然没有100%确定为什么有些应用程序有效,有些则没有。