为 Python 的特定版本编译 Python 模块

Compiling Python Module for Specific Version of Python

RI 必须在 Ubuntu 16.04 上为 Python 手动编译 library/module,并且 运行 遇到了问题。图书馆在这里:

DIPlib 3 - PyDIP

它是 OpenCV 的大小量词。问题是当 运行 执行命令时:

cmake /home/cooper/diplib-master/ -DCMAKE_INSTALL_PREFIX=$HOME/dip -DPYDIP_INSTALL_PATH=$(python3 -m site --user-site)

如说明中所述,它在路径 /home/cooper/.local/lib/python3.5/site-packages/PyDIP/PyDIP_bin.so 中构建文件。当我使用 python3 my_program.py 转到 运行 我的代码时,出现错误:

undefined symbol: _Py_ZeroStruct.

我尝试使用默认路径(python 2.7 对于我的系统)编译它并且零结构错误消失了,但是由于代码是为 Python 3 编写的,它没有按预期工作(获取 importlib 的导入错误)。所以我的问题是如何将 Python 或 Ubuntu 指向 .local 文件路径,以便它知道在哪里可以找到编译代码?或者,如果我做错了,我该如何正确编译这段代码以在我的系统上运行?我一直在阅读有关环境变量和系统路径的内容,但我认为我对它的理解还不够深入,以至于最终不会对我的计算机造成严重破坏。

PyDIP CMake 脚本在构建时应该更喜欢 Python 3 而不是 Python 2,您可以尝试拉取最新的 master 看看是否会给您带来更好的运气。

如果这不起作用,您可以添加

-DPYBIND11_PYTHON_VERSION=3.5

到 CMake 命令以指定 Python 的目标版本。