【发布时间】: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