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



RI不得不在Ubuntu 16.04上手动编译Python库/模块,遇到了问题。图书馆在这里:

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运行代码时,我会得到错误:

未定义符号:_Py_ZeroStruct。

我试着用默认路径编译它(我的系统是python 2.7(,并显示Zero Struct错误,但由于代码是为python 3编写的,所以它不能按预期工作(importlib会出现导入错误(。所以我的问题是,如何将Python或Ubuntu指向.local文件路径,以便它知道在哪里可以找到编译后的代码?或者,如果我做错了,我该如何正确编译这些代码以在我的系统上工作?我一直在读关于环境变量和系统路径的文章,但我认为我对它的理解还不够好,不会对我的电脑造成严重破坏。

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

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

-DPYBIND11_PYTHON_VERSION=3.5

到CMake命令,以指定要针对的Python版本。

最新更新