Issue #22394: Add a 'venv' command to Doc/Makefile.

This will create a venv using the interpreter specified by the PYTHON
variable for the Makefile that also install Sphinx. Typical usage is
expected to be:

  cd Doc
  make venv PYTHON=../python
  make html PYTHON=venv/bin/python3
diff --git a/.gitignore b/.gitignore
index c7db0c7..2343e94 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,11 +9,7 @@
 *~
 .gdb_history
 Doc/build/
-Doc/tools/docutils/
-Doc/tools/jinja/
-Doc/tools/jinja2/
-Doc/tools/pygments/
-Doc/tools/sphinx/
+Doc/venv/
 Lib/lib2to3/*.pickle
 Lib/test/data/*
 Lib/_sysconfigdata.py
diff --git a/.hgignore b/.hgignore
index e22a8f7..d22a58a 100644
--- a/.hgignore
+++ b/.hgignore
@@ -9,6 +9,7 @@
 autom4te.cache$
 ^build/
 ^Doc/build/
+^Doc/venv/
 buildno$
 config.cache
 config.log
diff --git a/Doc/Makefile b/Doc/Makefile
index 5b5f68a..93e59ef 100644
--- a/Doc/Makefile
+++ b/Doc/Makefile
@@ -15,11 +15,12 @@
 
 .PHONY: help build html htmlhelp latex text changes linkcheck \
 	suspicious coverage doctest pydoc-topics htmlview clean dist check serve \
-	autobuild-dev autobuild-stable
+	autobuild-dev autobuild-stable venv
 
 help:
 	@echo "Please use \`make <target>' where <target> is one of"
 	@echo "  clean      to remove build files"
+	@echo "  venv       to create a venv with necessary tools"
 	@echo "  html       to make standalone HTML files"
 	@echo "  htmlview   to open the index page built by the html target in your browser"
 	@echo "  htmlhelp   to make HTML files and a HTML help project"
@@ -102,7 +103,11 @@
 	 $(PYTHON) -c "import webbrowser; webbrowser.open('build/html/index.html')"
 
 clean:
-	-rm -rf build/*
+	-rm -rf build/* venv/*
+
+venv:
+	$(PYTHON) -m venv venv
+	./venv/bin/python3 -m pip install -U Sphinx
 
 dist:
 	rm -rf dist
@@ -172,4 +177,3 @@
 		exit 1;; \
 	esac
 	@make autobuild-dev
-
diff --git a/Misc/NEWS b/Misc/NEWS
index 496be4e..c7c8f8d 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -1348,6 +1348,10 @@
 Documentation
 -------------
 
+- Issue #22394: Doc/Makefile now supports ``make venv PYTHON=../python`` to
+  create a venv for generating the documentation, e.g.,
+  ``make html PYTHON=venv/bin/python3``.
+
 - Issue #21514: The documentation of the json module now refers to new JSON RFC
   7159 instead of obsoleted RFC 4627.