AVRO-3952: Auto-install tox
diff --git a/lang/py/build.sh b/lang/py/build.sh
index 000e048..369b8aa 100755
--- a/lang/py/build.sh
+++ b/lang/py/build.sh
@@ -55,7 +55,7 @@
   local doc_dir
   local version=$(cat ../../share/VERSION.txt)
   doc_dir="../../build/avro-doc-$version/api/py"
-  python3 -m tox -e docs
+  _tox -e docs
   mkdir -p "$doc_dir"
   cp -a docs/build/* "$doc_dir"
 }
@@ -72,11 +72,11 @@
 }
 
 lint() {
-  python3 -m tox -e lint
+  _tox -e lint
 }
 
 test_() {
-  TOX_SKIP_ENV=lint python3 -m tox --skip-missing-interpreters
+  TOX_SKIP_ENV=lint _tox --skip-missing-interpreters
 }
 
 main() {
@@ -95,4 +95,16 @@
   done
 }
 
+_tox() {
+  if command -v tox 2> /dev/null; then
+    tox "$@"
+  else
+    echo 'Your experience will improve if you install tox'
+    virtualenv="$(mktemp -d)"
+    python3 -m venv "$virtualenv"
+    "$virtualenv/bin/python3" -m pip install tox
+    "$virtualenv/bin/tox" "$@"
+  fi
+}
+
 main "$@"