我尝试在 ML 模型推理期间在 python 中的 FastAPI 服务层上运行 cython 编译时优化。 我尝试在 FastAPI 服务器中加载 cython 编译 ML 模块,而不是为 ML 模型加载普通的 python 模块。
在 Mac OS Monterey(版本 12.5)上运行时加载 ML 模型时出现以下错误
遇到无效的 ELF 标头问题
用于编译python文件的命令
python setup.py build_ext --inplace
setup.py文件的内容
从 distutils.core 导入设置 从 Cython.Build 导入 cythonize 设置(ext_modules = cythonize('v2 / model.pyx','v2 / model_config.pyx','v2 / utils.pyx'), extra_compile_args=["-mmacosx-version-min=10.9","-stdlib=libc++"], extra_link_args=["-mmacosx-version-min=10.9","-stdlib=libc++"], )
我试图在Python代码中加载的文件 model.cpython-310-darwin.so
如有任何帮助,我们将不胜感激
如果您尝试加载/编译共享对象文件,您可能需要在安装文件的库参数中指定它。例如,如果我有一个名为
libcalg.so
的文件并且想要动态链接我的 cython 代码,那么您需要这样的东西。
ext_modules = cythonize([
Extension(
"queue",
sources=["queue.pyx"],
libraries=["calg"]) # would be libcalg.so somewhere in usr/local/lib
])
通常共享对象文件以
l
为前缀,因此 C/C++ 知道在 usr/local/lib
目录中的何处查找它。如果您只是尝试使用该 model.cpython-310-darwin.so
中的功能,则需要动态链接它。希望这有帮助