【问题标题】:Built-in Libraries VS Libraries installed in the "lib" folder内置库 VS 安装在“lib”文件夹中的库
【发布时间】:2019-02-05 00:15:59
【问题描述】:

我想在 GAE 上使用 firebase-admin。 所以我按照以下方法安装了firebase-admin。

https://cloud.google.com/appengine/docs/standard/python/tools/using-libraries-python-27

appengine_config.py

from google.appengine.ext import vendor

# Add any libraries install in the "lib" folder.
vendor.add('lib')

requirements.txt

firebase-admin

并安装它。

pip install -t lib -r requirements.txt

然后我检查了“lib”文件夹,有六个。 而六个版本是1.11.0。

但我已经使用了内置的六个。

app.yaml

libraries:
- name: six
  version: latest

内置六个版本为“1.9.0”。

这些差异对GAE的过程有什么影响吗? 如果有影响,如何解决?

【问题讨论】:

  • GAE 中six 支持的版本是 1.9.0。如果将firebase-admin-python中的六个版本改成1.9.0呢?如果您收到与六个版本相关的任何错误消息,请分享它们。
  • pipdeptree 说“firebase-admin 要求 -> - google-api-core 要求 -> - 六个 [必需:>=1.10.0,安装:1.11.0]”。我不知道如果安装了1.9.0有任何影响。但是它与依赖不匹配。

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


【解决方案1】:

firebase-adminrequires six>=1.6.1,因此手动将版本 1.11.0 复制到您的应用不会导致该库出现问题。

但是,您应该确保您的应用程序中最初添加 six 依赖项的代码适用于此更高版本,因为复制的库将优先于任何 built-in libraries(因此在 @ 中指定它987654328@ 也是不必要的)。

值得一提的是,复制的库会计入文件配额,因为该库会与您的应用程序代码一起上传到 App Engine。如果您担心达到此配额,you can use this this technique to only install the dependencies that aren't already built-in,这将减少整体文件大小。

【讨论】:

  • 谢谢!我知道firebase-管理员可以在六个> = 1.6.1上工作。但是,当 6=1.11.0 时,其他 appengine 模块可以正常工作吗?例如 nbd/gql 或 appengine 模块。
【解决方案2】:

如果在 lib 目录和 app.yaml 中存在不同版本的库,则 lib 目录中的版本将可供您的应用使用。 因此,实际上,您的应用程序将使用六个 1.11.0。您可以通过登录 six.__version__ 来验证这一点,然后查看您获得的版本。

为避免混淆,我可能会删除 app.yaml 中的六个库条目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    相关资源
    最近更新 更多