【问题标题】:python import error "No module named appengine.ext"python导入错误“没有名为appengine.ext的模块”
【发布时间】:2013-03-24 21:48:21
【问题描述】:

运行这段代码后,我发现导入错误:-

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Hello, webapp World!')

application = webapp.WSGIApplication([('/', MainPage)],debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

如何使用 google.apengine.ext

【问题讨论】:

  • 你是怎么安装的?检查它是否在您的 PYTHONPATH 上。
  • 如果您尝试在交互式 Python 环境中运行它,则必须修改 sys.path,如下面的 cmets 所述。如果您打算为 Web 应用程序提供服务,那么您应该使用 dev_appserver.py 运行您的应用程序。命令将是 /platform/google_appengine/dev_appserver.py app.yaml
  • 我不知道你为什么删除了我的答案。我遇到了完全相同的错误,并且文件 google.py 导致了这个问题。所以对我来说就是答案。可能不是对您的确切情况的回答,但它是对我的情况的回答。我也收到了与错误完全相同的消息:“python import error “No module named appengine.ext”,所以请回复我的答案。问候。

标签: python google-app-engine


【解决方案1】:
import sys
sys.path.insert(1, '/Users/<username>/google-cloud-sdk/platform/google_appengine')
sys.path.insert(1, '/Users/<username>/google-cloud-sdk/platform/google_appengine/lib/yaml/lib')
sys.path.insert(1, 'lib')

if 'google' in sys.modules:
    del sys.modules['google']

这解决了我的问题

【讨论】:

  • 你把这段代码具体放在哪里了?是在appengine_config.py 文件中还是其他地方?
  • 这段代码放在你的主要执行方法的开头,它是添加对GAE包的引用。这也是一个旧代码,自从我上次编写以来,情况发生了变化。
【解决方案2】:

好像没有安装 App Engine SDK,或者至少 Python 运行时找不到它。

阅读并遵循此处的说明:https://cloud.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python

他们告诉你,如何安装 App Engine SDK for Python。

【讨论】:

  • 您好,我按照您指定的链接上的说明进行操作,但错误仍然存​​在。
  • @NamitaMaharanwar 我通过终端运行了以下命令(我使用的是 Mac):export PYTHONPATH="$PYTHONPATH:/usr/local/google_appengine:/usr/local/google_appengine/lib/:/usr/local/google_appengine/lib/yaml/"。您必须配置库的路径。
  • @JaquelinePassos 不太明白为什么,但设置 PYTHONPATH 也是唯一对我有用的方法。
  • 粘贴导出 PYTHONPATH="$PYTHONPATH:/usr/local/google_appengine:/usr/local/google_appengine/lib/:/usr/local/google_appengine/lib/yaml/ 后仍然无法正常工作"
  • 这里有另一个修复:查看import google print(google.__path__)。如果 python 正在使用缺少 appengine 的站点包和 dist 包,请使用 -sS 启动 python,或者只是删除那些 google 文件夹
【解决方案3】:

试试:

import google
print google.__path__

查看您正在导入的具体内容。

【讨论】:

  • >>> import google Traceback(最近一次调用最后一次):文件“”,第 1 行,在 ImportError: No module named google >>> print google.__path__ Traceback (最近一次调用):文件“”,第 1 行,在 NameError: name 'google' is not defined
  • 这对我有帮助。它向我指出了来自 Homebrew 的 protobuf 软件包,它安装了自己的 google 模块版本。删除它可以解决问题。
  • 我尝试了上述方法并得到 ['C:\\Python27\\lib\\site-packages\\google'] 那不是正确的地方。然后我使用下面的提示将此代码放在我的 Pycharm GAE 测试文件的顶部: import sys if 'google' in sys.modules: del sys.modules['google'] 这解决了我的问题。现在来了解为什么。 justus.science/blog/2015/04/19/sys.modules-is-dangerous.html
  • 所以我观看了来自 Pycon 的 David Beazley 的 Modules and Packages 视频。完成导入谷歌和打印技巧后,我发现谷歌指向站点包。在那里我发现了一个以 .pth 结尾的文件(这些文件可以修改你的路径)它被称为 google_auth-1.5.1-py3.6-nspkg.pth 我将扩展名更改为 .#pth 所以它没有加载并且一切正常。它现在指向 'C:\\Program Files (x86)\\Google\\Cloud SDK\\google-cloud-sdk\\platform\\google_appengine\\google' 这是我的 Google Cloud SDK,而不是旧的 App Engine SDK,我不再使用了。
  • 谢谢布赖恩·凯·沃克。花了几个小时试图找出我的模块没有导入的原因。在我的站点包中找到“google”,将其删除,但仍然无效。谁知道 .pth 文件甚至存在??
【解决方案4】:

我遇到了同样的问题,因为我在下载和安装 SDK 之前 pip 安装了 gcloud。 pip 安装创建了一个不包含 appengine 子模块(位于 SDK 文件夹中)的 python 包 google。我卸载了 gcloud 和相关软件包。然后只需 pip 安装 google-cloud-bigquery,这是我需要从 gcloud 获得的唯一软件包。现在一切正常。

【讨论】:

    【解决方案5】:

    我在使用 AWS Lambda 调用 Google Analytics API 时遇到了类似的错误。

    来自 (Schweigi1) 的解决方法帮助了我。

    import googleapiclient
    from googleapiclient.discovery_cache.base import Cache
    
    class MemoryCache(Cache):
        _CACHE = {}
    
        def get(self, url):
            return MemoryCache._CACHE.get(url)
    
        def set(self, url, content):
            MemoryCache._CACHE[url] = content
    

    用法:

    service = googleapiclient.discovery.build("analyticsreporting", "v4", http=http, credentials=credentials,cache=MemoryCache())
    

    希望这对在 AWS Lambda 中遇到此问题的人有所帮助。

    【讨论】:

      【解决方案6】:

      第一个可能的原因:

      你没有在google cloud sdk中安装python库,所以你可以在cmd中运行(以管理员身份):

      gcloud components install app-engine-python.

      第二个可能的原因:

      你的 IDE 没有成功进入谷歌库,它们存在于:

      C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine

      或在:

      C:\Users\[your user]\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine

      您可以在附加的链接中看到如何将这些库添加到 IDE 外部库:https://stackoverflow.com/a/24206781/8244338

      【讨论】:

        【解决方案7】:

        我在 python 中遇到了这个错误:

        from google.appengine.api import search
        ImportError: No module named appengine.api
        

        我认为这与该线程中正在发生的事情类似。

        所以,我的解决方案是运行“dev_appserver.py 'your yaml file'”。我通过以下链接获得了此解决方案:

        1) https://cloud.google.com/appengine/docs/standard/python/tools/using-local-server

        2) https://www.youtube.com/watch?v=BdqUY8lCuBI

        希望这会有所帮助!

        【讨论】:

          【解决方案8】:

          检查您是否在同一个包中命名了某个文件 google.py :),因为这会影响 google.appengine.ext 的导入。我有同样的错误:

          python import error “No module named appengine.ext”
          

          删除文件解决了这个问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-02-09
            • 1970-01-01
            • 2016-07-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多