Heroku 在尝试部署时没有看到 OpenVino

Heroku not seeing OpenVino when trying to deploy

我有一个 OpenVino 模型,我正试图通过 Heroku 进行部署。机器上的应用程序 运行s(因为 OpenVino 安装在机器上的 /opt/intel 目录中)。即使在使用 pip 成功安装 OpenVino 之后,我进行了导入,但仍然收到错误消息:

ImportError: dlopen(/opt/intel/openvino_2021/python/python3.9/openvino/inference_engine/ie_api.so, 2): Symbol not found: _PyCMethod_New
  Referenced from: /opt/intel/openvino_2021/python/python3.9/openvino/inference_engine/ie_api.so
  Expected in: flat namespace

尝试在脚本中导入 OpenVino 时。出于这个原因,我放弃了使用 pip,而是从机器上的源代码构建了 OpenVino。该脚本可以 运行 与机器上的 OpenVino 配合使用,但问题是如何将其部署到 Heroku 而无需将 OpenVino 包含在使用 pip freeze 生成的 requirements.txt 文件中。

在 requirements.txt 中为 Heroku 指定 OpenVino 不起作用(如上所述使用 pip 安装并不简单),因此我尝试将预期的 OpenVino 文件夹移动到 venv 文件夹中。在项目文件夹中,我将 OpenVino 文件夹复制到 venv > lib > python3.9 > sitepackages 中。然而,一旦部署到 Heroku 似乎没有效果,我仍然在 Heroku 日志中收到以下错误:

2022-01-06T19:39:59.115102+00:00 app[web.2]: File "./main.py", line 26, in <module>
2022-01-06T19:39:59.115206+00:00 app[web.2]: from openvino.inference_engine import IECore, IENetwork
2022-01-06T19:39:59.115219+00:00 app[web.2]: File "/app/.heroku/python/lib/python3.9/site-packages/openvino/inference_engine/__init__.py", line 30, in <module>
2022-01-06T19:39:59.115309+00:00 app[web.2]: from .ie_api import *
2022-01-06T19:39:59.115333+00:00 app[web.2]: ImportError: libpython3.9.so.1.0: cannot open shared object file: No such file or directory

所以预期的文件夹不存在。当然,对于Heroku也是不同的目录结构:

/app/.heroku/python/lib/python3.9/site-packages/

而不是:

/venv/lib/python3.9/site-packages

但是我需要在 Heroku 应用程序的站点包目录中获取 openvino。

如何手动将预期的 openvino 文件夹添加到 /app/.heroku/python/lib/python3.9/site-packages?如果那不可能,我该如何编辑 buildpack 来为 Heroku 应用程序安装 openvino?

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

谢谢!

您遇到的错误:ImportError: libpython3.9.so.1.0: cannot open shared object file: No such file or directory 是由于缺少对 Heroku 的外部依赖。

按照以下步骤解决此问题:

runtime.txt 添加到应用程序的根目录以指定 Python 运行时。参考Selecting a runtime.

python-3.8.12

Aptfile 添加到应用程序的根目录,以在编译和运行时添加对基于 apt 的依赖项的支持。参考heroku-buildpack-apt.

libpython3.8