内置库VS库安装在“ lib”文件夹中

时间:2018-08-30 06:25:42

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

我想在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流程有影响吗? 如果有效果,该如何解决?

2 个答案:

答案 0 :(得分:1)

如果lib目录和app.yaml中存在不同版本的库,则lib目录中的库将可供您的应用使用。 因此,有效地,您的应用将使用六个1.11.0。您可以通过登录six.__version__进行验证,然后查看获得的版本。

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

答案 1 :(得分:1)

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

但是,您应该确保最初为之添加six依赖项的应用程序中的代码可以在此更高版本上使用,因为复制的库将优先于任何built-in libraries(因此也不需要在app.yaml中指定它。

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