2010-08-26 30 views
3

我有这个问题,它驱动我疯了!鼻子/鼻涕虫:进口问题

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

所以我有以下设置:
我有一个virtualenv与鼻子,nosegae,webtest和gaetestbed。它被称为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的'上下文'中运行应用程序,所以它不知道w关于webtest“。

但是为了确保我创建了一个新目录并添加了一个小GAE应用程序。这只是3个文件:
-main.py
-app.yaml
-test_huh.py(进口WebTest的模块。)

现在真正让我感到困惑的是,这只是工作。我运行nosetests cmds,它实际上通过了我的测试。

所以我开始挖掘我的应用程序,以找出可能不同,但我真的打了一堵墙。

我首先想到这可能是一个权限问题,因为错误说'访问...被拒绝',但我真的找不到什么特别的东西。接下来我想也许是因为我在virtualenv之前创建了我的应用程序,但我无法真正了解这可能是一个问题。

所以,如果任何人有一个线索为什么发生这种情况,我会真的很感激。

+0

我最近发现了NoseGAE,'dev_appserver.py'和(所有东西)python'imp'模块可能带来的更深层次的问题。你可以从我的[Gist Repo](https://gist.github.com/883676#file_readme.md)重现它。 基本上,它看起来像'imp'模块,其'dev_appserver.py'(因此NoseGAE插件本身)都严重依赖,并不表现与标准python导入完全平行。这有一个不幸的副作用,那就是'sys.modules'中的模块实例并不总是指向其子模块的属性。其结果是令人困惑和不可预知的导入问题。 – 2011-03-28 02:29:07

回答

2

经过几个小时的尝试,我实际上刚刚解决了我的问题后,问这个问题。

什么修复它是用以下开关--no-site-packages创建virtualenv。显然,我在我的系统的Python中有一个webtest副本,它以某种方式给我的virtualenv带来了问题。当我试图在我的virtualenv中安装webtest并且它已经存在时,我应该注意到它。

仍然不是100%确定为什么一些应用程序工作,而其他人没有。