google-cloud 依赖项在 python 应用程序引擎中被覆盖

Posted

技术标签:

【中文标题】google-cloud 依赖项在 python 应用程序引擎中被覆盖【英文标题】:google-cloud dependencies getting overriden in python app engine 【发布时间】:2019-02-28 22:14:45 【问题描述】:

我们使用的是 GAE 标准,根据 google 文档,我们应该使用 pip install requirement-name -t lib/ 在某些文件夹中提供依赖项。

我们想在同一个 GAE 项目中同时使用 BigQuerypub-sub,我认为这不是一个非常罕见的组合。

现在问题是我们只能安装其中一个客户端库,因为两者共享 google>cloud 命名空间,以后安装的任何一个都将覆盖早期的依赖关系。

截图:-

1) 仅安装 BigQuery 客户端库时:-

2) 安装后pip install -t lib/ google-cloud-pubsub

同样的问题和解决方案可能是什么?

更新:-

进一步尝试在虚拟环境中安装这两个依赖项,而不在 lib/ 文件夹中进行销售,这两个依赖项都在安装时不会相互覆盖。所以看起来问题出在文件夹中。

没有供应商依赖的相同屏幕截图。

【问题讨论】:

您是否尝试将这两个库都添加到requirements.txt 文件中,然后运行pip install -t lib/ -r requirements.txt 是的@Mangu 试过了,在这种情况下,后面的依赖会覆盖第一个依赖,最后在lib/ 文件夹中只有后面的依赖。 【参考方案1】:

您应该在一个命令中安装所有依赖项:

$ pip install -t lib/ google-cloud-bigquery google-cloud-pubsub

这将同时安装两个软件包:

$ ls lib/google/cloud
__pycache__  _testing.py  environment_vars.py  obsolete.py   pubsub_v1
_helpers.py  bigquery     exceptions.py        operation.py
_http.py     client.py    iam.py               pubsub.py

从需求文件安装依赖应该有同样的效果:

$ cat requirements.txt
google-cloud-bigquery
google-cloud-pubsub
$ pip install -t lib/ -r requirements.txt

确保从一个空的lib/ 文件夹开始,并使用最新版本的pip

pip install -U pip

【讨论】:

感谢@Dustin,删除lib/文件夹后工作,很奇怪!!!知道为什么它只有在删除 lib 文件夹然后安装依赖项后才能工作? 是的,因为在单独的命令中安装两个依赖项会将两者都“标记”为已安装,但第二个将覆盖第一个创建的 lib/google/cloud 目录。如果你不从一个空的lib 目录开始,pip 会认为两者都已经安装了,它不会做任何事情。

以上是关于google-cloud 依赖项在 python 应用程序引擎中被覆盖的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud sleuth 依赖项在 Spring Boot 堆栈应用程序中抛出 RibbonLoadBalancerClientException

是否可以从外部 Maven 依赖项在 Spring Java 项目中导入占位符值 (@Value)?

将私有 github 存储库设置为 docker 中 package.json 中的依赖项在 github 操作中生成失败

如何使用预安装的 libv8 gem 和预编译的 v8 依赖项在 aarch64 上安装 therubyracer?

如何使用 Amazon AWS Elastic Beanstalk 部署私有 python pip 依赖项?

ReferenceError:导入@google-cloud/storage 时分配的左侧无效