diff --git a/CMakeLists.txt b/CMakeLists.txt
index d183b58ad142567857f6cc3daa539fcaa6f691f6..97f86318c2d3fc8ff59e8409537cf03e96026ab9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -268,7 +268,7 @@ endif()
 
 if(OGS_USE_PYTHON)
     add_definitions(-DOGS_USE_PYTHON)
-    find_package(pybind11 REQUIRED)
+    add_subdirectory(ThirdParty/pybind11)
 endif()
 
 if (OGS_FATAL_ABORT)
diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake
index 09d8d084c1f9ae92197c939cbc2f69bab8629af3..a07dbb57ab1c8ee4c946f65b8a03fb3cc0c2e5a5 100644
--- a/scripts/cmake/SubmoduleSetup.cmake
+++ b/scripts/cmake/SubmoduleSetup.cmake
@@ -19,6 +19,9 @@ endif()
 if(OGS_BUILD_SWMM)
     list(APPEND REQUIRED_SUBMODULES ThirdParty/SwmmInterface)
 endif()
+if(OGS_USE_PYTHON)
+    list(APPEND REQUIRED_SUBMODULES ThirdParty/pybind11)
+endif()
 
 # Sync submodules, which is required when a submodule changed its URL
 if(OGS_SYNC_SUBMODULES)