2014-08-29 139 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