5

测试我的 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

我读了很多关于它但我找不到答案...任何想法或帮助?感谢你们!!

4

5 回答 5

9

我在测试我的应用程序时遇到了同样的问题。我发现我/usr/local/google_appengine包含googlepython 模块,所以我将该路径添加到我的$PYTHONPATH环境变量中。您可以通过 2 种方式执行此操作:

  1. 在您的控制台中,键入export PYTHONPATH="$PYTHONPATH:/usr/local/google_appengine". 这会将它添加到此控制台会话的 PYTHONPATH 中。

  2. 在您的 shell 配置文件(可能是~/.bash_profile)中,添加如下一行:

    export PYTHONPATH="$PYTHONPATH:/usr/local/google_appengine"
    

    然后打开一个新的控制台会话或使用source ~/.bash_profile(或任何文件)重新加载您的配置文件

您可能需要修改它,因为 a)您的“google_appengine”文件夹位于不同的位置(不是/usr/local)或 b)您的操作系统以不同的方式分隔路径(我认为 windows 使用;而不是:- 我在 Mac 上)

于 2013-09-26T04:11:40.253 回答
7

我想补充一个我遇到过的案例。我的操作系统是 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

于 2015-07-20T15:13:11.533 回答
5

似乎问题来自/google_appengine并不总是在正确位置的目录,因此 python 找不到它(通过PYTHONPATH)。

  1. 通过运行找到 google_appengine 目录的位置

    find / -name google_appengine -type d

  2. 找到它后(例如 : /usr/lib/google-cloud-sdk/platform/google_appengine),运行:

    export PYTHONPATH=:/usr/lib/google-cloud-sdk/platform/google_appengine

这解决了我的问题。

于 2016-11-09T11:04:36.233 回答
2

这不是答案,但您可以尝试添加以下代码进行调试:

import logging

import google

logging.info("google path: {}.".format(google.__file__))

将此路径与 App Engine SDK 的位置进行比较。

于 2013-03-24T01:48:12.150 回答
1

以下代码将打印所有 google python lib 路径

import google
print "google path: {}.".format(google.__path__)

在我的机器上运行代码会打印这个

谷歌路径:['/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']。

这与查找 google appengine 安装目录不同。在我的 Mac 上,安装程序会创建符号链接

/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')
于 2016-01-04T11:16:56.270 回答