Pip 在GCP Composer上安装私有依赖项是否成功? 背景信息

Pip 在GCP Composer上安装私有依赖项是否成功? 背景信息,pip,airflow,google-cloud-composer,Pip,Airflow,Google Cloud Composer,通常,在容器环境中,我可以使用requirements.txt轻松安装我的私有依赖项,如下所示: --index-url https://user:pass@some_repo.jfrog.io/some_repo/api/pypi/pypi/simple some-private-lib ... requests==2.22.0 ... my-private-lib==0.1 ... requests==2.23.0 包“some private lib”就是我想要安装的 问题 在GC

通常,在容器环境中,我可以使用
requirements.txt
轻松安装我的私有依赖项,如下所示:

--index-url https://user:pass@some_repo.jfrog.io/some_repo/api/pypi/pypi/simple

some-private-lib
...
requests==2.22.0
...
my-private-lib==0.1
...
requests==2.23.0
“some private lib”
就是我想要安装的

问题 在GCP Composer环境中,我尝试使用GCloud命令(
gcloud composer环境更新ENV_NAME--从文件中更新pypi包。/requirements.txt--位置
), 但它抱怨
requirements.txt
没有遵循PEP-508中定义的格式。然后我在如何从私有回购安装依赖项上找到了这一点,但还不是非常清楚。按照指南中的说明,我创建了一个包含以下内容的文件
pip.conf

[global]
extra-index-url=https://user:pass@some_repo.jfrog.io/some_repo/api/pypi/pypi/simple
然后将其放入我的环境的GCS存储桶中:
gs://us-central1-xxxx-bucket/config/pip/pip.conf

现在我再次运行命令(
gcloud composer environments update ENV_NAME--update pypi packages from file./requirements.txt--location location
),其中
requirements.txt
只包含一行:
一些私有库。它失败了,出现了一个非常不透明的错误:
失败:未能安装PyPI软件包。

问题:
我做错了什么?还有其他的解决办法吗?谢谢

您可以通过查看与composer实例关联的GKE集群的工作负载来进一步调试它

安装新软件包时,它会在集群中生成作业,以便为新的Web服务器、调度器和工作进程构建和部署容器。如果查看这些作业的日志,您可以看到当它尝试运行
pip安装时发生了什么。如果它无法访问您的私人回购协议,日志将显示

我遇到的一个问题确实返回了您提到的一般错误:构建映像的作业将在包依赖关系冲突时失败。如果存在此类冲突,它将继续重试作业,直到整个过程超时

更具体地说,我传递给composer的需求文件如下所示:

--index-url https://user:pass@some_repo.jfrog.io/some_repo/api/pypi/pypi/simple

some-private-lib
...
requests==2.22.0
...
my-private-lib==0.1
...
requests==2.23.0
我的私有库的需求文件如下所示:

--index-url https://user:pass@some_repo.jfrog.io/some_repo/api/pypi/pypi/simple

some-private-lib
...
requests==2.22.0
...
my-private-lib==0.1
...
requests==2.23.0
我最终解决了这个问题,在我的私有库中使用一个版本范围而不是一个特定的版本来指定版本要求


同样,如果您的问题是由上述问题引起的,它将在作业日志中指出。

在尝试在Composer中安装软件包时,我们也遇到了许多问题,然后我们将代码容器化,并使用它代替Python操作符。

是的,您链接到的官方指南中似乎缺少一些步骤。我现在正在努力解决这个问题,所以如果我找到答案,我会把它贴在这里。