--- Modules/FindBoost.cmake
+++ Modules/FindBoost.cmake
@@ -953,6 +953,11 @@
     set( _boost_docstring_release "Boost ${COMPONENT} library (release)")
     set( _boost_docstring_debug   "Boost ${COMPONENT} library (debug)")
 
+    if(${COMPONENT} STREQUAL "python" OR ${COMPONENT} STREQUAL "mpi_python")
+      # CPython-specific version of _PYTHON_ABI_EXTRACTION_COMMAND variable from python.eclass.
+      execute_process(COMMAND python -c "import sys; sys.stdout.write('.'.join(str(x) for x in sys.version_info[:2]))" OUTPUT_VARIABLE _python_abi)
+    endif()
+
     #
     # Find RELEASE libraries
     #
@@ -962,6 +967,14 @@
       ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}-${Boost_LIB_VERSION}
       ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}
       ${Boost_LIB_PREFIX}boost_${COMPONENT} )
+    if(${COMPONENT} STREQUAL "python" OR ${COMPONENT} STREQUAL "mpi_python")
+      list(APPEND _boost_RELEASE_NAMES
+        ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}-${Boost_LIB_VERSION}
+        ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}
+        ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}-${Boost_LIB_VERSION}
+        ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}
+        ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi} )
+    endif()
     if(_boost_STATIC_RUNTIME_WORKAROUND)
       set(_boost_RELEASE_STATIC_ABI_TAG "-s${_boost_RELEASE_ABI_TAG}")
       list(APPEND _boost_RELEASE_NAMES
@@ -969,6 +982,13 @@
         ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}
         ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}-${Boost_LIB_VERSION}
         ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG} )
+      if(${COMPONENT} STREQUAL "python" OR ${COMPONENT} STREQUAL "mpi_python")
+        list(APPEND _boost_RELEASE_NAMES
+          ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}-${Boost_LIB_VERSION}
+          ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}
+          ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}-${Boost_LIB_VERSION}
+          ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG} )
+      endif()
     endif()
     if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread")
        _Boost_PREPEND_LIST_WITH_THREADAPI(_boost_RELEASE_NAMES ${_boost_RELEASE_NAMES})
@@ -994,6 +1014,15 @@
       ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}
       ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}
       ${Boost_LIB_PREFIX}boost_${COMPONENT} )
+    if(${COMPONENT} STREQUAL "python" OR ${COMPONENT} STREQUAL "mpi_python")
+      list(APPEND _boost_DEBUG_NAMES
+       ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}-${Boost_LIB_VERSION}
+       ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}
+       ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}-${Boost_LIB_VERSION}
+       ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}
+       ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_MULTITHREADED}
+       ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi} )
+    endif()
     if(_boost_STATIC_RUNTIME_WORKAROUND)
       set(_boost_DEBUG_STATIC_ABI_TAG "-s${_boost_DEBUG_ABI_TAG}")
       list(APPEND _boost_DEBUG_NAMES
@@ -1001,6 +1030,13 @@
         ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}
         ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}-${Boost_LIB_VERSION}
         ${Boost_LIB_PREFIX}boost_${COMPONENT}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG} )
+      if(${COMPONENT} STREQUAL "python" OR ${COMPONENT} STREQUAL "mpi_python")
+        list(APPEND _boost_DEBUG_NAMES
+         ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}-${Boost_LIB_VERSION}
+         ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_COMPILER}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}
+         ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}-${Boost_LIB_VERSION}
+         ${Boost_LIB_PREFIX}boost_${COMPONENT}-${_python_abi}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG} )
+      endif()
     endif()
     if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread")
        _Boost_PREPEND_LIST_WITH_THREADAPI(_boost_DEBUG_NAMES ${_boost_DEBUG_NAMES})
