diff --git a/test/distrib/python/distribtest.py b/test/distrib/python/distribtest.py
new file mode 100644
index 0000000000000000000000000000000000000000..428ffe2b34a296cf2eb437aa1954c128f01597aa
--- /dev/null
+++ b/test/distrib/python/distribtest.py
@@ -0,0 +1,7 @@
+from grpc.beta import implementations
+
+# This code doesn't do much but makes sure the native extension is loaded
+# which is what we are testing here.
+channel = implementations.insecure_channel('localhost', 1000)
+del channel
+print 'Success!'
diff --git a/test/distrib/python/run_distrib_test.sh b/test/distrib/python/run_distrib_test.sh
index 34e3efccbd5a1ce7e2504555231e1a7f2a18bc06..a185bcbc269f1148e328b2a0e4d0418adcbcd734 100755
--- a/test/distrib/python/run_distrib_test.sh
+++ b/test/distrib/python/run_distrib_test.sh
@@ -32,5 +32,27 @@ set -ex
 
 cd $(dirname $0)
 
-pip install "$EXTERNAL_GIT_ROOT/input_artifacts/grpcio-0.12.0b6.tar.gz"
+# TODO(jtattermusch): replace the version number
+SDIST_ARCHIVE="$EXTERNAL_GIT_ROOT/input_artifacts/grpcio-0.12.0b8.tar.gz"
+BDIST_DIR="file://$EXTERNAL_GIT_ROOT/input_artifacts"
 
+if [ ! -f "${SDIST_ARCHIVE}" ]
+then
+  echo "Archive ${SDIST_ARCHIVE} does not exist."
+  exit 1
+fi
+
+# TODO(jtattermusch): this shouldn't be required
+pip install --upgrade six
+
+# TODO(jtattermusch): if these don't get preinstalled, pip tries to install them
+# with --use-grpc-custom-bdist option, which obviously fails.
+pip install --upgrade enum34
+pip install --upgrade futures
+
+GRPC_PYTHON_BINARIES_REPOSITORY="${BDIST_DIR}" \
+    pip install \
+    "${SDIST_ARCHIVE}" \
+    --install-option="--use-grpc-custom-bdist"
+
+python distribtest.py