我有一个试图通过 Heroku 部署的 OpenVino 模型。该应用程序在机器上运行(因为 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 正常运行,但问题是如何在不将 OpenVino 包含在使用 pip freeze 生成的 requirements.txt 档案中的情况下将其部署到 Heroku。
在 Heroku 的 requirements.txt 中指定 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?
任何帮助将非常感激。
谢谢!
uj5u.com热心网友回复:
您遇到的错误:ImportError: libpython3.9.so.1.0: cannot open shared object file: No such file or directory
是由于缺少对 Heroku 的外部依赖。
请按照以下步骤解决此问题:
将 a 添加runtime.txt
到应用程序的根目录以指定 Python 运行时。请参阅选择运行时。
python-3.8.12
Aptfile
在应用程序的根目录中添加一个,以在编译和运行时添加对基于 apt 的依赖项的支持。请参阅heroku-buildpack-apt。
libpython3.8
0 评论