diff --git a/Doc/Makefile b/Doc/Makefile
index b8896da4a91869..53af6aca659cef 100644
--- a/Doc/Makefile
+++ b/Doc/Makefile
@@ -13,7 +13,8 @@ JOBS         = auto
 PAPER        =
 SOURCES      =
 DISTVERSION  = $(shell $(PYTHON) tools/extensions/patchlevel.py)
-REQUIREMENTS = requirements.txt
+IS_PYTHON_BUILD = $(shell $(PYTHON) -c 'import sysconfig; print("true") if sysconfig.is_python_build() else None')
+REQUIREMENTS = $(if $(IS_PYTHON_BUILD),requirements.txt,requirements-no-build.txt)
 SPHINXERRORHANDLING = --fail-on-warning
 
 # Internal variables.
diff --git a/Doc/requirements-no-build.txt b/Doc/requirements-no-build.txt
new file mode 100644
index 00000000000000..8b3c4d410a75a3
--- /dev/null
+++ b/Doc/requirements-no-build.txt
@@ -0,0 +1,7 @@
+-r requirements.txt
+
+# Requirements when not running the build Python,
+# such as optional native extensions.
+
+# Needed to support generating social cards in sphinxext-opengraph.
+--only-binary matplotlib