Google Cloud Python函数如何访问私有Python包


  1. 我正在使用Python的Google Cloud Function。其他几个功能正在生产中
  2. 然而,为此,我还创建了一个自定义Python包,该包在github上作为私有repo提供
  3. 我需要在谷歌功能中安装软件包

我所做的

  1. 我使用functions-framework在本地运行Google函数
  2. 我有一个requirements.txt,它有一个指向包的链接。这是通过在requirements.txt中添加以下行来完成的:
-e git+https://github.com/<repo>/<project>#egg=<project>
  1. 我运行pip install -r requirements.txt。并且程序包已成功安装
  2. 现在,在函数的python代码中使用import <pkg-name>工作,我可以访问所有函数

将功能推向云端时的挑战

  1. 根据文档,要将Cloud功能推送到Google Cloud,我发出命令:
gcloud functions 
deploy <function-name> 
--trigger-http  
--entry-point <entry-function> 
--runtime python37 
--project=<my-project>

正如预期的那样,这会产生一个错误,因为它无法访问git的私人回购。

  1. 我创建了一个谷歌云存储库,并将其链接到git repo,希望以某种方式在requirements.txt中指定。只是不知道如何指定。

  2. 我尝试在Google Cloud Function中设置用户名和密码的环境变量(我同意这不是一个好主意(,并在requirements.txt中指定为:

-e git+https://${AUTH_USER}:${AUTH_PASSWORD}@github.com/<repo>/<project>#egg=<project>

这也造成了一个错误。

如有任何帮助或指导,我们将不胜感激。

虽然@marian.viadoi在上述评论中是正确的,即谷歌云功能无法访问私有git repo,但我已经实现了一个变通方法和共享,以备不时之需。以下是已经做的:

  1. Python包是根据中的文档准备的(https://packaging.python.org/tutorials/packaging-projects/)
  2. 二进制分布";whl";文件是使用python3 setup.py bdist_wheel创建的
  3. 这个whl文件被放在谷歌函数文件夹中。我选择把它放在它的dist文件夹下
  4. requirements.txt中,我向云函数所需的其他依赖项添加了一行:./dist/xxxx.whl
  5. 通过gcloud deploy ..将云功能推送到GCP
  6. 成功安装后,包及其依赖项将自动安装在云功能的虚拟环境中

这并不能回答如何在谷歌功能中使用私有回购(这是不可能的(,但上述步骤确保了私有包可以在不同的云功能之间轻松共享和更新。

您的方法3(使用用户名和密码安装Git(确实有效。但请记住将它们添加为Build environment variables,而不是Run environment variables,因为在构建过程中会出现pip install。如果您对使用个人凭据有顾虑,可以获得部署令牌(类似于个人凭据,带有用户名和密码(。

您不能从云功能访问私有回购。根据官方文件:

">使用私有依赖

依赖项安装在云中构建不提供对SSH密钥访问的环境。软件包托管在需要基于SSH的身份验证的存储库中的与您的项目代码一起出售并上传,如中所述上一节。

您可以使用带有-t DIRECTORY标志的pip-install命令来复制在部署应用程序之前,将私有依赖项放入本地目录,如下所示:

将您的依赖项复制到本地目录:

pip install -t DIRECTORY DEPENDENCY

将一个空的init.py文件添加到DIRECTORY目录以将其打开进入模块。

从该模块导入以使用您的依赖项:

import DIRECTORY.DEPENDENCY

">

在Python 中指定依赖项

最新更新