[Python] How to specify the version of python for building pybind11 module

Discussão em 'Python' iniciado por Stack, Junho 26, 2025.

  1. Stack

    Stack Membro Participativo

    I have setup my pybind11 for building python modules written in c++. I have python3.6, and python3.7 installed on my ubuntu system, I installed both python3.6-dev and python3.7-dev. then I setup my cmakelists.txt file for my project as following:

    set(PYTHONVERSION "3.7")
    # None of the lines below works
    add_definitions(-DPYBIND11_PYTHON_VERSION="${PYTHONVERSION}")
    set(PYBIND11_PYTHON_VERSION ${PYTHONVERSION} CACHE STRING "")
    set(PYBIND11_PYTHON_VERSION ${PYTHONVERSION})
    find_package(Python ${PYTHONVERSION} COMPONENTS Development Interpreter)

    set(TARGET proj)
    pybind11_add_module(${TARGET} MODULE proj.cpp)
    target_include_directories(${TARGET} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
    if (Python_FOUND)
    target_include_directories(${TARGET} PUBLIC ${Python_INCLUDE_DIRS})
    endif()



    However, when I build the project it still generates modules for python3.6 instead of python3.7. Below is my output from cmake, I found cmake finds python3.6 first, where I didn't even call findpython.

    [cmake] Not searching for unused variables given on the command line.
    [cmake] -- The C compiler identification is GNU 9.3.0
    [cmake] -- The CXX compiler identification is GNU 9.3.0
    [cmake] -- Detecting C compiler ABI info
    [cmake] -- Detecting C compiler ABI info - done
    [cmake] -- Check for working C compiler: /usr/bin/gcc-9 - skipped
    [cmake] -- Detecting C compile features
    [cmake] -- Detecting C compile features - done
    [cmake] -- Detecting CXX compiler ABI info
    [cmake] -- Detecting CXX compiler ABI info - done
    [cmake] -- Check for working CXX compiler: /usr/bin/g++-9 - skipped
    [cmake] -- Detecting CXX compile features
    [cmake] -- Detecting CXX compile features - done
    [cmake] -- Conan: Adjusting output directories
    [cmake] -- Conan: Using cmake global configuration
    [cmake] -- Conan: Adjusting default RPATHs Conan policies
    [cmake] -- Conan: Adjusting language standard
    [cmake] -- Current conanbuildinfo.cmake directory: /home/mpnv38/develop/parcel_dim_pywrapper/build
    [cmake] -- Conan: Compiler GCC>=5, checking major version 9
    [cmake] -- Conan: Checking correct version: 9
    [cmake] -- Found PythonInterp: /usr/bin/python (found version "3.6.9")
    [cmake] -- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.6m.so
    [cmake] -- Performing Test HAS_CPP14_FLAG
    [cmake] -- Performing Test HAS_CPP14_FLAG - Success
    [cmake] -- Found Python: /usr/bin/python3.7 (found suitable version "3.7.5", minimum required is "3.7") found components: Development Interpreter Development.Module Development.Embed
    [cmake] -- Configuring done
    [cmake] -- Generating done


    Did I miss anything?

    Continue reading...

Compartilhe esta Página