无法导入模块appengine.ext

时间:2014-08-29 15:09:59

标签: python google-app-engine

我正在玩ndb,但是当我在python中导入appengine模块时,我陷入困境。这只发生在我的单元测试中。单元测试位于项目根目录的test.py中。

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中有一个名为Google的目录,其结构如下

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

请帮忙。

2 个答案:

答案 0 :(得分: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 :(得分:1)

文件夹google的名称是否完全正确?您的问题似乎显示为.Gooogle ......?

扫描PYTHONPATH时可以使用

__init__.py(可以将其设置为像PATH这样的环境变量,或者使用类似于其他用户在其答案中包含的模式在代码中进行修改),尝试查找包含__init__.py的文件夹,并将其视为模块。具有自己的__init__.py的子文件夹也被视为子模块等...

如果PYTHONPATH包含的文件夹包含google,其中包含__init__.pyappengine等文件夹,则应在代码中为其导入。你能尝试运行以下内容并发布输出吗?这将显示PYTHONPATH中的目录。

import sys
print sys.path