我在测试main.py GAE应用程序时遇到此错误:
Traceback (most recent call last):
File "main.py", line 4, in <module>
from google.appengine.ext import db
ImportError: No module named google.appengine.ext
我读了很多关于它但我找不到答案......任何想法或帮助? 谢谢你们!!
答案 0 :(得分:9)
我在测试我的应用时遇到了同样的问题。我发现我的/usr/local/google_appengine
包含google
python模块,因此我将该路径添加到我的$PYTHONPATH
环境变量中。您可以通过两种方式执行此操作:
在您的控制台中,输入export PYTHONPATH="$PYTHONPATH:/usr/local/google_appengine"
。这将把它添加到您的PYTHONPATH以进行此控制台会话。
在您的shell个人资料文件(可能是~/.bash_profile
)中,添加如下所示的行:
export PYTHONPATH="$PYTHONPATH:/usr/local/google_appengine"
然后打开新的控制台会话或使用source ~/.bash_profile
(或任何文件)重新加载您的个人资料
您可能需要对此进行修改,因为a)您的“google_appengine”文件夹位于不同的位置(不是/usr/local
)或b)您的操作系统以不同方式分隔路径(我认为Windows使用;
代替:
- 我在Mac上)
答案 1 :(得分:6)
我想补充一下我所面对的案例。我的操作系统是MAC。
Google App Engine会在/usr/local/google_appengine
下创建一个链接。
我将上述路径添加到PYTHONPATH
,但它仍无效。经过一番追踪,我发现我已经安装了 protobuf ,这也是 google 的开发,请检查
https://developers.google.com/protocol-buffers/docs/pythontutorial
它会在side_packages
下创建一个名为google
的文件夹。因此,如果您尝试import google
,它实际上是导入 protobuf 。
因此,一个可能的解决方案是暂时卸载 protobuf :
pip uninstall protobuf
答案 2 :(得分:5)
似乎问题来自目录/google_appengine
并不总是在正确的位置,因此python无法找到它(通过PYTHONPATH
)。
运行
查找google_appengine目录的位置 find / -name google_appengine -type d
找到后(例如:/usr/lib/google-cloud-sdk/platform/google_appengine
),请运行:
export PYTHONPATH=:/usr/lib/google-cloud-sdk/platform/google_appengine
这解决了我的问题。
答案 3 :(得分:2)
这不是答案,但您可以尝试添加以下代码进行调试:
import logging
import google
logging.info("google path: {}.".format(google.__file__))
将此路径与App Engine SDK的位置进行比较。
答案 4 :(得分:1)
以下代码将打印所有google python lib路径
import google
print "google path: {}.".format(google.__path__)
在我的机器上运行代码打印此
google路径: [ '/usr/local/Cellar/protobuf/2.6.1/libexec/lib/python2.7/site-packages/google', '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/google']。
这与寻找谷歌appengine安装目录不同。 在我的Mac上,安装程序会创建sym链接
/usr/local/google_appengine
如果你是单元测试,你可能需要添加代码的路径
import sys
sys.path.insert(1, '/usr/local/google_appengine')
sys.path.insert(1, '/usr/local/google_appengine/lib/yaml/lib')