diff --git a/setuptools/config/pyprojecttoml.py b/setuptools/config/pyprojecttoml.py
index bc76b111..886c9747 100644
--- a/setuptools/config/pyprojecttoml.py
+++ b/setuptools/config/pyprojecttoml.py
@@ -26,10 +26,14 @@ def load_file(filepath: _Path) -> dict:
 
 
 def validate(config: dict, filepath: _Path):
-    from setuptools.extern._validate_pyproject import validate as _validate
+    import validate_pyproject.api, validate_pyproject.cli, validate_pyproject.plugins
+    plugins = validate_pyproject.plugins.list_from_entry_points()
+    validator = validate_pyproject.api.Validator(
+        validate_pyproject.cli.select_plugins(plugins, ('setuptools', 'distutils'), ())
+    )
 
     try:
-        return _validate(config)
+        return validator(config)
     except Exception as ex:
         if ex.__class__.__name__ != "ValidationError":
             # Workaround for the fact that `extern` can duplicate imports
