9

我使用 Python 虚拟环境。基本上,它工作得很好,但是我在编译一些 Python 绑定时遇到了问题,即使用 libIGL 和 pybind11。

CMake 具有以下与 Python 相关的变量:

 PYTHON_EXECUTABLE                /users/me/libs/pyvenv/bin/python                           
 PYTHON_INCLUDE_DIR               /usr/include/python2.7                                          
 PYTHON_LIBRARY                   /usr/lib64/libpython2.7.so 

它似乎可以正确检测到先前激活的虚拟环境的python3.5可执行文件,但它发现包含和库的一些错误的2.7路径。

所以我想手动将这些路径设置到我的虚拟环境中。我浏览了虚拟环境的目录结构,我想我找到了包含在/users/me/libs/pyvenv/include/python3.5m. 但是我找不到libpython*,我的虚拟环境中根本没有*.so文件。那么在这种情况下我应该使用哪个库?

4

2 回答 2

0

限制 python 库以匹配 cmake 中找到的解释器的版本:

find_package(PythonInterp REQUIRED)
find_package(PythonLibs "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}" REQUIRED )

或者如果 cmake>=3.12可用,则使用FindPython

于 2019-05-19T07:23:10.010 回答
0

与此问题类似,您可以从您的内部运行 pythonvirtualenv并运行

import pybind11
print(pybind11.__file__)
# '/home/me/.pyenv/versions/py36/lib/python3.6/site-packages/pybind11/__init__.py'

于 2021-01-02T19:37:16.463 回答