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 项目中同时使用 BigQuery
和 pub-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?