Merge pull request #15371 from mehrdada/v1.11.x

Backport 15362 to 1.11.x
diff --git a/requirements.txt b/requirements.txt
index 53768c6..0a7f2e8 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,7 +2,6 @@
 coverage>=4.0
 cython>=0.27
 enum34>=1.0.4
-futures>=2.2.0
 protobuf>=3.5.0.post1
 six>=1.10
 wheel>=0.29
diff --git a/src/python/grpcio_tests/setup.py b/src/python/grpcio_tests/setup.py
index 4e0f672..99b9130 100644
--- a/src/python/grpcio_tests/setup.py
+++ b/src/python/grpcio_tests/setup.py
@@ -37,13 +37,16 @@
 }
 
 INSTALL_REQUIRES = (
-    'coverage>=4.0', 'enum34>=1.0.4', 'futures>=2.2.0',
+    'coverage>=4.0', 'enum34>=1.0.4',
     'grpcio>={version}'.format(version=grpc_version.VERSION),
     'grpcio-tools>={version}'.format(version=grpc_version.VERSION),
     'grpcio-health-checking>={version}'.format(version=grpc_version.VERSION),
     'oauth2client>=1.4.7', 'protobuf>=3.5.0.post1', 'six>=1.10',
     'google-auth>=1.0.0', 'requests>=2.14.2')
 
+if not PY3:
+    INSTALL_REQUIRES += ('futures>=2.2.0',)
+
 COMMAND_CLASS = {
     # Run `preprocess` *before* doing any packaging!
     'preprocess': commands.GatherProto,
diff --git a/tools/run_tests/artifacts/build_artifact_python.sh b/tools/run_tests/artifacts/build_artifact_python.sh
index 9ea0f05..624da8f 100755
--- a/tools/run_tests/artifacts/build_artifact_python.sh
+++ b/tools/run_tests/artifacts/build_artifact_python.sh
@@ -91,6 +91,12 @@
 if [ "$GRPC_BUILD_GRPCIO_TOOLS_DEPENDENTS" != "" ]
 then
   "${PIP}" install -rrequirements.txt
+
+  if [ "$("$PYTHON" -c "import sys; print(sys.version_info[0])")" == "2" ]
+  then
+    "${PIP}" install futures>=2.2.0
+  fi
+
   "${PIP}" install grpcio --no-index --find-links "file://$ARTIFACT_DIR/"
   "${PIP}" install grpcio-tools --no-index --find-links "file://$ARTIFACT_DIR/"
 
diff --git a/tools/run_tests/helper_scripts/build_python.sh b/tools/run_tests/helper_scripts/build_python.sh
index 0b5d331..652e41c 100755
--- a/tools/run_tests/helper_scripts/build_python.sh
+++ b/tools/run_tests/helper_scripts/build_python.sh
@@ -161,7 +161,13 @@
 $VENV_PYTHON -m pip install --upgrade pip==9.0.2
 $VENV_PYTHON -m pip install setuptools
 $VENV_PYTHON -m pip install cython
-$VENV_PYTHON -m pip install six enum34 protobuf futures
+$VENV_PYTHON -m pip install six enum34 protobuf
+
+if [ "$("$VENV_PYTHON" -c "import sys; print(sys.version_info[0])")" == "2" ]
+then
+  $VENV_PYTHON -m pip install futures
+fi
+
 pip_install_dir "$ROOT"
 
 $VENV_PYTHON "$ROOT/tools/distrib/python/make_grpcio_tools.py"