我有一个OpenVino模型,我正试图通过Heroku进行部署。该应用程序在机器上运行(因为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>蟒蛇3.9>网站包。然而,一旦部署到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?如果这不可能,我如何编辑构建包来为Heroku应用程序安装openvino?
任何帮助都将不胜感激。
谢谢!
ImportError: libpython3.9.so.1.0: cannot open shared object file: No such file or directory
是由于缺少对Heroku的外部依赖。
按照以下步骤解决此问题:
将runtime.txt
添加到应用程序的根目录以指定Python运行时。请参阅选择运行时。
python-3.8.12
在应用程序的根目录中添加一个Aptfile
,以在编译和运行时添加对基于apt的依赖项的支持。请参阅heroku-buildpack-apt。
libpython3.8