【问题标题】:IBM Cloud Functions - "Invalid virtualenv. Zip file does not include activate_this.py"IBM Cloud Functions -“无效的 virtualenv。Zip 文件不包括 activate_this.py”
【发布时间】:2021-08-09 13:35:01
【问题描述】:

我想将具有虚拟环境的 python 脚本(我需要一个不在 IBM Cloud Functions 提供的运行时中的库)部署到 IBM Cloud Functions。我想用简单的拉链来做到这一点 我遵循了以下链接中的文档:在压缩文件中使用本地虚拟环境打包 Python 代码https://cloud.ibm.com/docs/openwhisk?topic=openwhisk-prep

我安装了 python 3.7,virtualenv 也使用它。根据需要将 virtualenv 命名为“virtualenv”,但是当我尝试调用该操作时仍然收到错误消息: 结果:

{
  "error": "The action failed to generate or locate a binary. See logs for details."
}
Logs:
[
  "2021-05-20T09:27:03.627094Z    stderr: Invalid virtualenv. Zip file does not include activate_this.py",
  "2021-05-20T09:27:03.627Z       stderr: The action did not initialize or run as expected. Log data might be missing."
]

我检查了 virtualenv 目录,我在 Scripts 文件夹中有“activate_this.py”。

我错过了什么?我采取的步骤和文档之间的唯一区别是我有一台 Windows 计算机,所以环境的激活就像 virtualenv\Scripts\activate,而不是通过 bin,我通过 Windows GUI 压缩了脚本和 virtualenv。

Cloud Functions 是否有可能尝试在“bin”文件夹而不是“Scripts”中查找文件?如果是这样,我该怎么办?

谢谢

【问题讨论】:

  • 很可能 Cloud Functions 只在 bin 中查找。
  • 我应该如何从 Windows 部署一些东西?
  • 您可以看到如果将 zip 中的 Scripts 文件夹重命名为 bin 会发生什么。运气好的话,它可能会起作用。
  • 文档还提到使用 Docker 可能更容易。 cloud.ibm.com/docs/…
  • 我不熟悉 docker,你认为如果我在 docker 镜像中使用相同的 windows virtualenv 会起作用吗?顺便说一句,将脚本文件夹覆盖到 bin 工作。现在它在查找运行脚本所需的库时遇到了问题。你知道linux virtualenv中的文件夹结构吗?在 Windows 中我有: virtualenv\Lib\site-packages\ 我应该如何覆盖这些文件夹名称?

标签: python ibm-cloud openwhisk ibm-cloud-functions


【解决方案1】:

正如您所指出的,这是处理 windows 打包 venv 时的一个错误。它已在此 fork https://github.com/nimbella-corp/openwhisk-runtime-python/commit/2eb3422cb2dca291cff47ed3239de8512170a1be 中修复,您可以应用并构建自己的容器映像作为解决方法。

【讨论】:

  • 谢谢,只需压缩 main.py 文件旁边的依赖项即可解决问题。
  • 顺便说一句,您知道这将在什么时候真正适用于 Windows 环境?
  • 此 PR 将为 Windows github.com/apache/openwhisk-runtime-python/pull/110提供一个修复程序
猜你喜欢
  • 2021-06-05
  • 2019-03-23
  • 2019-10-15
  • 2017-03-16
  • 2020-01-18
  • 2018-04-09
  • 2016-04-02
  • 2019-04-27
  • 2019-05-16
相关资源
最近更新 更多