IBM Cloud Functions - “无效的 virtualenvZip 文件不包含 activate_this.py”

问题描述

我想将具有虚拟环境的 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”文件夹中查找文件?如果是这样,我该怎么办?

谢谢

解决方法

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