我正在尝试使用安装了 opencv 的 virtualenv 将函数上传到 IBM Cloud Functions。但是,当我尝试在 IBM Cloud 中运行该操作时,它会显示:
{
"error": "Traceback (most recent call last):
File \"/action/1/src/exec__.py\", line 43, in <module>
from main__ import main as main
File \"/action/1/src/main__.py\", line 1, in <module>
import requests, base64, json, cv2\nModuleNotFoundError: No module named 'cv2'"
}
我为此使用了 python:3.7 运行时。我认为这是一个库问题,因为此运行时使用 Debian Stretch,而且我之前在导入带有 python:3-slim-strech docker 映像的 opencv 时遇到问题,因为它没有一些必需的库,如 libsm6、libxext6 和 libxrender。
但是,当我在IBM 用于其 python:3.7 运行时apt list
的docker 映像中运行时,它包含了这些库。
我使用此处显示的 docker 方法创建了 virtualenv 。我使用的确切命令如下:
docker run --rm -v "$PWD:/tmp" ibmfunctions/action-python-v3.7 /bin/bash -c
"cd tmp; virtualenv virtualenv; source virtualenv/bin/activate;
pip install --no-deps opencv-python;"
我使用 --no-deps 是因为运行时已经安装了 numpy,这是 opencv 的唯一依赖项,并且因为包含 numpy 的 zip 文件超过了 48MB 的限制,无法将其上传到 Cloud Functions。
我应该能够毫无问题地导入 cv2,但我仍然收到上一条消息。任何帮助都会很棒!