2010-08-26 41 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%確定爲什麼一些應用程序工作,而其他人沒有。