Nose / Nosegae:导入问题

3 投票
2 回答
1121 浏览
提问于 2025-04-16 03:21

我遇到了一个问题,真让我抓狂!

我正在开发我的第一个真正的Google App Engine应用程序,我总是喜欢在写测试的时候发现一些新东西。

我的环境设置是这样的:
我有一个虚拟环境,里面安装了nose、nosegae、webtest和gaetestbed,叫做porksvr。

我这样激活我的虚拟环境:

source porksvr/bin/activate

要运行nose,我使用以下命令:

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

起初我想,“好吧,nose是在dev_appserver的‘上下文’中运行应用程序,所以它不知道webtest。”

但为了确认,我创建了一个新目录,并添加了一个小的GAE应用程序。它只有三个文件:
-main.py
-app.yaml
-test_huh.py(导入了webtest模块。)

让我感到困惑的是,这个小应用程序居然可以正常工作。我运行nosetests命令,结果测试都通过了。

于是我开始深入研究我的应用程序,想找出有什么不同,但我真的遇到了瓶颈。

我最开始以为可能是权限问题,因为错误信息说“访问...被拒绝”,但我找不到什么特别的地方。接着我想,也许是因为我在创建虚拟环境之前就创建了应用程序,但我真的看不出这会有什么问题。

所以如果有人知道为什么会这样,我将非常非常感激。

2 个回答

6

Nose-GAE在使用虚拟环境(virtualenv)时,有一些已知的问题

你可以试试使用nose的 --without-sandbox 这个选项。

2

太好了,经过几个小时的尝试,我在问这个问题后终于解决了我的问题。

解决办法是用这个选项创建虚拟环境 --no-site-packages。显然,我的系统Python里有一个webtest的副本,这让我的虚拟环境出现了问题。我应该在尝试在虚拟环境中用pip安装webtest时就注意到,因为它提示我已经存在了。

不过我还是不太明白为什么有些应用能正常工作,而有些却不行。

撰写回答