我正在玩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
请帮忙。
答案 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
......?
__init__.py
(可以将其设置为像PATH这样的环境变量,或者使用类似于其他用户在其答案中包含的模式在代码中进行修改),尝试查找包含__init__.py
的文件夹,并将其视为模块。具有自己的__init__.py
的子文件夹也被视为子模块等...
如果PYTHONPATH包含的文件夹包含google
,其中包含__init__.py
和appengine
等文件夹,则应在代码中为其导入。你能尝试运行以下内容并发布输出吗?这将显示PYTHONPATH中的目录。
import sys
print sys.path