diff --git a/setup.py b/setup.py
index 720e4f75f6cd63a19898de870e022a5f046dfab7..80828a3b4a9aa3d9cc9ec033648bee0f9e676fb4 100644
--- a/setup.py
+++ b/setup.py
@@ -118,6 +118,8 @@ def cython_extensions(package_names, module_names, extra_sources, include_dirs,
           sources=[module_file] + extra_sources,
           include_dirs=include_dirs, libraries=libraries,
           define_macros=define_macros,
+          extra_compile_args=list(CFLAGS),
+          extra_link_args=list(LDFLAGS),
       ) for (module_name, module_file) in zip(module_names, module_files)
   ]
   if build_with_cython:
diff --git a/src/python/grpcio/commands.py b/src/python/grpcio/commands.py
index 490d0f07b3dcb6b63f49b3bf519f32fb2a009155..31bd00e94eaa74f2182b02af1f5a26cb18827867 100644
--- a/src/python/grpcio/commands.py
+++ b/src/python/grpcio/commands.py
@@ -135,7 +135,7 @@ class Install(install.install, EggNameMixin):
 
   def initialize_options(self):
     install.install.initialize_options(self)
-    self.use_grpc_custom_bdist = False
+    self.use_grpc_custom_bdist = bool(int(os.environ.get('GRPC_PYTHON_USE_CUSTOM_BDIST', '1')))
 
   def finalize_options(self):
     install.install.finalize_options(self)
diff --git a/test/distrib/python/run_distrib_test.sh b/test/distrib/python/run_distrib_test.sh
index a185bcbc269f1148e328b2a0e4d0418adcbcd734..08856ad388a63d9e2e206f7646ebee84afdc9e5c 100755
--- a/test/distrib/python/run_distrib_test.sh
+++ b/test/distrib/python/run_distrib_test.sh
@@ -42,17 +42,17 @@ then
   exit 1
 fi
 
-# TODO(jtattermusch): this shouldn't be required
-pip install --upgrade six
+PIP=pip2
+which $PIP || PIP=pip
+PYTHON=python2
+which $PYTHON || PYTHON=python
 
-# 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
+# TODO(jtattermusch): this shouldn't be required
+$PIP install --upgrade six
 
 GRPC_PYTHON_BINARIES_REPOSITORY="${BDIST_DIR}" \
-    pip install \
-    "${SDIST_ARCHIVE}" \
-    --install-option="--use-grpc-custom-bdist"
+    $PIP install \
+    "${SDIST_ARCHIVE}"
+
+$PYTHON distribtest.py
 
-python distribtest.py
diff --git a/tools/dockerfile/distribtest/python_arch_x64/Dockerfile b/tools/dockerfile/distribtest/python_arch_x64/Dockerfile
index 53bb8e8708f760553ba3279ac497e9d1359e4cb1..c4f2431080e559ace3058308df542e9ed7ab20dd 100644
--- a/tools/dockerfile/distribtest/python_arch_x64/Dockerfile
+++ b/tools/dockerfile/distribtest/python_arch_x64/Dockerfile
@@ -30,6 +30,7 @@
 FROM base/archlinux
 
 RUN pacman --noconfirm -Syy
-RUN pacman --noconfirm -S python
-RUN pacman --noconfirm -S python-pip
+RUN pacman --noconfirm -S openssl
+RUN pacman --noconfirm -S python2
+RUN pacman --noconfirm -S python2-pip
 
diff --git a/tools/dockerfile/distribtest/python_centos6_x64/Dockerfile b/tools/dockerfile/distribtest/python_centos6_x64/Dockerfile
index 3889f8862f988d2de2d43bcda6c7e830ea3d6f75..99306bb4037e1e79ba6135deb93314e174eed7ef 100644
--- a/tools/dockerfile/distribtest/python_centos6_x64/Dockerfile
+++ b/tools/dockerfile/distribtest/python_centos6_x64/Dockerfile
@@ -34,3 +34,5 @@ RUN yum install -y python
 RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
 RUN yum install -y python-pip
 
+RUN pip install --upgrade pip
+
diff --git a/tools/run_tests/build_artifact_python.sh b/tools/run_tests/build_artifact_python.sh
index 48cf390f696c913119bef01b6ae3b2a582d05675..835fad83e1495af6bc46ad29a73f0af04621500b 100755
--- a/tools/run_tests/build_artifact_python.sh
+++ b/tools/run_tests/build_artifact_python.sh
@@ -39,11 +39,13 @@ then
   pip install -rrequirements.txt
 fi
 
-GRPC_PYTHON_BUILD_WITH_CYTHON=1 ${SETARCH_CMD} python setup.py \
-    bdist_wheel \
-    sdist \
+GRPC_PYTHON_USE_CUSTOM_BDIST=0  \
+GRPC_PYTHON_BUILD_WITH_CYTHON=1 \
+${SETARCH_CMD} python setup.py  \
+    bdist_wheel                 \
+    sdist                       \
     bdist_egg_grpc_custom
 
 mkdir -p artifacts
 
-cp -r dist/* artifacts
\ No newline at end of file
+cp -r dist/* artifacts