我使用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
文件。那么在那种情况下我应该使用哪个库?
答案 0 :(得分:0)
限制python库以匹配cmake中找到的解释器的版本:
find_package(PythonInterp REQUIRED)
find_package(PythonLibs "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}" REQUIRED )
或者如果cmake> = 3.12可用,则使用FindPython
答案 1 :(得分:0)
与 this question 类似,您可以在 virtualenv
中运行 python 并运行
import pybind11
print(pybind11.__file__)
# '/home/me/.pyenv/versions/py36/lib/python3.6/site-packages/pybind11/__init__.py'