【问题标题】:dev_appserver.py can't find pkg_resourcesdev_appserver.py 找不到 pkg_resources
【发布时间】:2021-04-11 14:40:39
【问题描述】:

作为使用 GAE Python 2 从ndb 迁移到cloud-ndb 的一部分,您需要将以下内容添加到appengine_config.py:

import pkg_resources
from google.appengine.ext import vendor

vendor.add('lib')
pkg_resources.working_set.add_entry('lib')

使用dev_appserver.py 在本地运行时,我收到一个错误,提示找不到pkg_resources。

我该如何解决这个问题?

【问题讨论】:

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


    【解决方案1】:

    作为使用 GAE Python 2 从 ndb 迁移到 cloud-ndb 的一部分,您需要将以下内容添加到 appengine_config.py:

    这是在文档中的某个地方吗?我很好奇是什么导致你得出这个结论。

    不久前,我在 localhost 和远程都遇到了 google-cloud-storage 的奇怪错误

    DistributionNotFound: The 'google-cloud-storage' distribution was not found and is required by the application
    

    似乎我在多个地方都有pkg_resources,我需要lib 文件夹中的pkg_resources 来加载。我认为 google-cloud-xxxxxxx 库需要 pkg_resources 与它们位于同一目录中才能正常工作。 (打印 pkg_resources.__file__ 会显示正在获取哪些 pkg_resources)。

    我的解决方法是在vendor.add('lib') 之后执行import pkg_resources 和reload(pkg_resources):

    vendor.add('lib')
    
    import pkg_resources
    reload(pkg_resources)
    

    我最近刚刚迁移到 google-cloud-ndb 并且不需要对 pkg_resources 进行任何进一步的更改,所以现在我认为 reload(pkg_resources) 可能使我摆脱了您所面临的问题。

    【讨论】:

      【解决方案2】:

      我发现使用dev_appserver.py 在本地运行时不需要pkg_resources。它仅在部署时需要。

      虽然我无法解决问题,但一个好的解决方法是将appengine_config.py 更新为:

      from google.appengine.ext import vendor
      
      vendor.add('lib')
      
      try:
          import pkg_resources
          pkg_resources.working_set.add_entry('lib')
      except ImportError:
          pass
      

      通过此修改,它可以在本地和部署时工作。

      【讨论】:

        猜你喜欢
        • 2017-07-25
        • 2011-07-08
        • 1970-01-01
        • 2012-05-19
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        • 2018-08-18
        • 1970-01-01
        相关资源
        最近更新 更多