2014-08-29 305 views
2

我正在玩ndb,但當我在python中導入appengine模塊時卡住了。這隻發生在我的單元測試中。單元測試位於項目根目錄的test.py中。無法導入模塊appengine.ext

Python 2.7.5 (default, Mar 9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from google.appengine.ext import ndb 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named appengine.ext 

以下是與上述相關的.bash_profile的內容。

APP_ENGINE_HOME="/Users/xxxxx/google-cloud-sdk/platform/google_appengine/" 
export PATH=$PATH:$MYSQL:$M2_HOME/bin:$ANT_HOME/bin:$CATALINA_HOME/bin:$APP_ENGINE_HOME 

我有一個名爲谷歌在google_appengine結構如下

.Gooogle 
+-- __init__.py 
+-- appengine 
| +-- __init__.py 
| +-- ext 
    | +-- ndb 
    | +-- __init__.py 

請幫助目錄。

回答

3

使用AppEngine上的包外面的它是利用dev_appserver做設置最簡單的方法:

import sys 
sys.path.insert(0, '/path/to/google_appengine') 
import dev_appserver 
dev_appserver.fix_sys_path() 

# and then e.g. 
from google.appengine.ext import ndb 
+1

我試過了你的建議,但是我仍然收到同樣的錯誤。 「ImportError:沒有名爲appengine.ext的模塊」 – 2014-08-31 11:27:55

1

正是夾google的名字嗎?你的問題似乎顯示爲.Gooogle ...?

__init__.py當解釋器掃描PYTHONPATH(可以將其設置爲環境變量,如PATH,或使用與其他用戶在其答案中包含的模式類似的模式修改)時,會嘗試查找包含__init__.py,並認爲這些是模塊。用自己的__init__.py也算子模塊,等...

如果PYTHONPATH包括具有google包含__init__.py和文件夾一樣appengine該文件夾,子文件夾,它應該是進口準備在你的代碼。你可以嘗試運行以下併發布輸出?這將顯示您的PYTHONPATH中的目錄。

import sys 
print sys.path