Google App Engine - 运行dev_appserver.py时出错 - 没有名为appengine.api的模块

时间:2016-07-05 05:46:52

标签: python python-2.7 google-app-engine

尝试让Google App Engine在本地运作后,我认为最好在这里提出这个问题,然后自己回答。我相信你们中的一些人可能会遇到这个问题。

安装GAE SDK for Python后,我尝试运行本教程。我从GitHub克隆了他们的'Hello World'应用程序,并尝试使用dev_appserver.py在本地运行它。我不断收到一条错误消息“没有名为appengine.api的模块”

我使用TensorFlow和Google开发的一些软件包,并找到了解决这个问题的方法。我将在下面回答。

2 个答案:

答案 0 :(得分:1)

发生在我身上的是Google开发的一些库已添加到我的PYTHONPATH中。所以当dev_appserver.py尝试执行以下行时,

from google.appengine.api import appinfo

它抛出错误说" ImportError:没有名为appengine.api的模块"因为它已经在寻找一个不同的谷歌模块。在我的情况下,这是由Protobuf引起的。我试图找到一种方法来保持Protobuf,但时间到了我,我不想再浪费时间了。你可以运行

pip list

并查看您是否安装了此模块。我做的是然后使用

卸载它
sudo pip uninstall protobuf

这会将已添加的软件包卸载到PYTHONPATH,即

/usr/local/lib/python2.7/site-packages/google/

创建此问题的Google路径是哪条。现在,为了安全,如果你运行

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

它应该处理dev_appserver.py导入模块,它应该运行。

请发表评论,或者如果你找到一种新方法,请告诉我。

答案 1 :(得分:0)

更新:此问题已在SDK版本1.9.40中修复。

这可能是由GAE Issue 12963引起的,它仍会影响当前的(1.9.38)SDK版本。见"ImportError: No module named webapp2" after Linux SDK upgrade (1.9.35 -> 1.9.38)

如果您的SDK版本是1.9.37或1.9.38降级到1.9.36,您可以找到here。至少在修复程序发布之前。这使您无需手动操作PYTHONPATH,而可能会让您在路上遇到麻烦。