【问题标题】: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
通过此修改,它可以在本地和部署时工作。