使用Python虚拟环境时include和libs在哪里?

时间:2017-08-18 11:16:18

标签: python cmake virtualenv pybind11

我使用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文件。那么在那种情况下我应该使用哪个库?

2 个答案:

答案 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'