Cmake is not able to find Python-libraries

后端 未结 10 1497
太阳男子
太阳男子 2020-12-02 16:53

Getting this error:

sudo: unable to resolve host coderw@ll
-- Could NOT find PythonLibs (missing:  PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) 
CMake Error at /usr         


        
相关标签:
10条回答
  • 2020-12-02 17:32

    Paste this into your CMakeLists.txt:

    # find python
    execute_process(COMMAND python-config --prefix OUTPUT_VARIABLE PYTHON_SEARCH_PATH)
    string(REGEX REPLACE "\n$" "" PYTHON_SEARCH_PATH "${PYTHON_SEARCH_PATH}")
    file(GLOB_RECURSE PYTHON_DY_LIBS ${PYTHON_SEARCH_PATH}/lib/libpython*.dylib ${PYTHON_SEARCH_PATH}/lib/libpython*.so)
    if (PYTHON_DY_LIBS)
        list(GET PYTHON_DY_LIBS 0 PYTHON_LIBRARY)
        message("-- Find shared libpython: ${PYTHON_LIBRARY}")
    else()
        message(WARNING "Cannot find shared libpython, try find_package")
    endif()
    
    find_package(PythonInterp)
    find_package(PythonLibs ${PYTHON_VERSION_STRING} EXACT)
    
    0 讨论(0)
  • 2020-12-02 17:38

    Even after adding -DPYTHON_INCLUDE_DIR and -DPYTHON_LIBRARY as suggested above, I was still facing the error Could NOT find PythonInterp. What solved it was adding -DPYTHON_EXECUTABLE:FILEPATH= to cmake as suggested in https://github.com/pybind/pybind11/issues/99#issuecomment-182071479:

    cmake .. \
    -DPYTHON_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())")  \
    -DPYTHON_LIBRARY=$(python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))") \
    -DPYTHON_EXECUTABLE:FILEPATH=`which python`
    
    0 讨论(0)
  • 2020-12-02 17:44

    Some last version of Ubuntu installs Python 3.4 by default and the CMake version from Ubuntu (2.8) only searches up to Python 3.3.

    Try to add set(Python_ADDITIONAL_VERSIONS 3.4) before the find_package statement.

    Remember to clean CMakeCache.txt too.

    0 讨论(0)
  • 2020-12-02 17:44

    This problem can also happen in Windows. Cmake looks into the registry and sometimes python values are not set. For those with similar problem:

    http://ericsilva.org/2012/10/11/restoring-your-python-registry-in-windows/

    Just create a .reg file to set the necessary keys and edit accordingly to match your setup.

    Windows Registry Editor Version 5.00
    
    [HKEY_CURRENT_USER\Software\Python]
    
    [HKEY_CURRENT_USER\Software\Python\Pythoncore]
    
    [HKEY_CURRENT_USER\Software\Python\Pythoncore\2.6]
    
    [HKEY_CURRENT_USER\Software\Python\Pythoncore\2.6\InstallPath]
    @="C:\\python26"
    
    [HKEY_CURRENT_USER\Software\Python\Pythoncore\2.6\PythonPath]
    @="C:\\python26;C:\\python26\\Lib\\;C:\\python26\\DLLs\\"
    
    [HKEY_CURRENT_USER\Software\Python\Pythoncore\2.7]
    
    [HKEY_CURRENT_USER\Software\Python\Pythoncore\2.7\InstallPath]
    @="C:\\python27"
    
    [HKEY_CURRENT_USER\Software\Python\Pythoncore\2.7\PythonPath]
    @="C:\\python27;C:\\python27\\Lib\\;C:\\python27\\DLLs\\"
    
    0 讨论(0)
提交回复
热议问题