diff --git a/docs/changelog/1575.feature.rst b/docs/changelog/1575.feature.rst
new file mode 100644
index 00000000..7a36ab20
--- /dev/null
+++ b/docs/changelog/1575.feature.rst
@@ -0,0 +1,3 @@
+Implement support for building projects
+having :pep:`517#in-tree-build-backends` ``backend-path`` setting -
+by :user:`webknjaz`
diff --git a/src/tox/helper/build_isolated.py b/src/tox/helper/build_isolated.py
index 55ea41b8..3d897097 100644
--- a/src/tox/helper/build_isolated.py
+++ b/src/tox/helper/build_isolated.py
@@ -1,10 +1,40 @@
+"""PEP 517 build backend invocation script.
+
+It accepts externally parsed build configuration from `[build-system]`
+in `pyproject.toml` and invokes an API endpoint for building an sdist
+tarball.
+"""
+
+import os
 import sys
 
+
+def _ensure_module_in_paths(module, paths):
+    """Verify that the imported backend belongs in-tree."""
+    if not paths:
+        return
+
+    module_path = os.path.normcase(os.path.abspath(module.__file__))
+    normalized_paths = (os.path.normcase(os.path.abspath(path)) for path in paths)
+
+    if any(os.path.commonprefix((module_path, path)) == path for path in normalized_paths):
+        return
+
+    raise SystemExit(
+        "build-backend ({!r}) must exist in one of the paths "
+        "specified by backend-path ({!r})".format(module, paths),
+    )
+
+
 dist_folder = sys.argv[1]
 backend_spec = sys.argv[2]
 backend_obj = sys.argv[3] if len(sys.argv) >= 4 else None
+backend_paths = sys.argv[4].split(os.path.pathsep) if sys.argv[4] else []
+
+sys.path[:0] = backend_paths
 
 backend = __import__(backend_spec, fromlist=["_trash"])
+_ensure_module_in_paths(backend, backend_paths)
 if backend_obj:
     backend = getattr(backend, backend_obj)
 
diff --git a/src/tox/package/builder/isolated.py b/src/tox/package/builder/isolated.py
index c02aa109..38ebe8ea 100644
--- a/src/tox/package/builder/isolated.py
+++ b/src/tox/package/builder/isolated.py
@@ -1,6 +1,7 @@
 from __future__ import unicode_literals
 
 import json
+import os
 from collections import namedtuple
 
 import six
@@ -11,7 +12,9 @@ from tox import reporter
 from tox.config import DepConfig, get_py_project_toml
 from tox.constants import BUILD_ISOLATED, BUILD_REQUIRE_SCRIPT
 
-BuildInfo = namedtuple("BuildInfo", ["requires", "backend_module", "backend_object"])
+BuildInfo = namedtuple(
+    "BuildInfo", ["requires", "backend_module", "backend_object", "backend_paths"],
+)
 
 
 def build(config, session):
@@ -84,7 +87,12 @@ def get_build_info(folder):
     module = args[0]
     obj = args[1] if len(args) > 1 else ""
 
-    return BuildInfo(requires, module, obj)
+    backend_paths = build_system.get("backend-path", [])
+    if not isinstance(backend_paths, list):
+        abort("backend-path key at build-system section must be a list, if specified")
+    backend_paths = [folder.join(p) for p in backend_paths]
+
+    return BuildInfo(requires, module, obj, backend_paths)
 
 
 def perform_isolated_build(build_info, package_venv, dist_dir, setup_dir):
@@ -103,6 +111,7 @@ def perform_isolated_build(build_info, package_venv, dist_dir, setup_dir):
                 str(dist_dir),
                 build_info.backend_module,
                 build_info.backend_object,
+                os.path.pathsep.join(str(p) for p in build_info.backend_paths),
             ],
             returnout=True,
             action=action,

Support PEP517 in-tree build backend
I'm getting
```python-traceback
ERROR: invocation failed (exit code 1), logfile: ~/src/github/ansible/pylibssh/.tox/.package/log/.package-2.log
=================================== log start ====================================
Traceback (most recent call last):
  File "~/.pyenv/versions/3.7.1/lib/python3.7/site-packages/tox/helper/build_requires.py", line 7, in <module>
    backend = __import__(backend_spec, fromlist=[None])
ModuleNotFoundError: No module named 'pep517_backend'
```
because of
```console
$ cat pyproject.toml                            
[build-system]
...
backend-path = ["bin"]  # requires 'Pip>=20' or 'pep517>=0.6.0'
build-backend = "pep517_backend"
```
and
```console
$ ls -l bin/pep517_backend.py      
-rw-r--r-- 1 me me 6.2K May  5 00:43 bin/pep517_backend.py
```

I think this should be considered a bug. Pip supports it starting v20 and pep517 supports it with v0.7 or so.
diff --git a/tests/unit/package/builder/test_package_builder_isolated.py b/tests/unit/package/builder/test_package_builder_isolated.py
index d43ed5f1..63e0685a 100644
--- a/tests/unit/package/builder/test_package_builder_isolated.py
+++ b/tests/unit/package/builder/test_package_builder_isolated.py
@@ -138,3 +138,18 @@ def test_package_isolated_toml_bad_backend(initproj):
     build-backend = []
     """,
     )
+
+
+def test_package_isolated_toml_bad_backend_path(initproj):
+    """Verify that a non-list 'backend-path' is forbidden."""
+    toml_file_check(
+        initproj,
+        6,
+        "backend-path key at build-system section must be a list, if specified",
+        """
+    [build-system]
+    requires = []
+    build-backend = 'setuptools.build_meta'
+    backend-path = 42
+    """,
+    )

pip install -e .[testing]
parse_log_pytest
pytest
pytest pytest-cov
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
coverage==7.8.0
distlib==0.3.9
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
execnet==2.1.1
filelock==3.18.0
flaky==3.8.1
freezegun==1.5.1
importlib_metadata==8.6.1
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
packaging @ file:///croot/packaging_1734472117206/work
pathlib2==2.3.7.post1
platformdirs==4.3.7
pluggy @ file:///croot/pluggy_1733169602837/work
psutil==7.0.0
py==1.11.0
pytest @ file:///croot/pytest_1738938843180/work
pytest-cov==6.0.0
pytest-mock==3.14.0
pytest-randomly==3.16.0
pytest-xdist==3.6.1
python-dateutil==2.9.0.post0
six==1.17.0
toml==0.10.2
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
-e git+https://github.com/tox-dev/tox.git@268ca020ef8bf1600123add72eb4984cba970a4d#egg=tox
virtualenv==20.29.3
zipp==3.21.0

name: tox
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==7.8.0
      - distlib==0.3.9
      - execnet==2.1.1
      - filelock==3.18.0
      - flaky==3.8.1
      - freezegun==1.5.1
      - importlib-metadata==8.6.1
      - pathlib2==2.3.7.post1
      - platformdirs==4.3.7
      - psutil==7.0.0
      - py==1.11.0
      - pytest-cov==6.0.0
      - pytest-mock==3.14.0
      - pytest-randomly==3.16.0
      - pytest-xdist==3.6.1
      - python-dateutil==2.9.0.post0
      - six==1.17.0
      - toml==0.10.2
      - tox==3.18.2.dev1+g268ca020
      - virtualenv==20.29.3
      - zipp==3.21.0
prefix: /opt/conda/envs/tox

tests/unit/package/builder/test_package_builder_isolated.py::test_package_isolated_toml_bad_backend_path
tests/unit/package/builder/test_package_builder_isolated.py::test_verbose_isolated_build tests/unit/package/builder/test_package_builder_isolated.py::test_dist_exists_version_change tests/unit/package/builder/test_package_builder_isolated.py::test_package_isolated_no_pyproject_toml
tests/unit/package/builder/test_package_builder_isolated.py::test_package_isolated_toml_no_requires tests/unit/package/builder/test_package_builder_isolated.py::test_package_isolated_toml_bad_backend tests/unit/package/builder/test_package_builder_isolated.py::test_package_isolated_toml_no_build_system tests/unit/package/builder/test_package_builder_isolated.py::test_package_isolated_toml_bad_requires tests/unit/package/builder/test_package_builder_isolated.py::test_package_isolated_toml_no_backend
src/tox/helper/build_isolated.py src/tox/package/builder/isolated.py docs/changelog/1575.feature.rst
src/tox/helper/build_isolated.py src/tox/package/builder/isolated.py docs/changelog/1575.feature.rst