diff --git a/src/python/src/.gitignore b/src/python/grpcio/.gitignore
similarity index 100%
rename from src/python/src/.gitignore
rename to src/python/grpcio/.gitignore
diff --git a/src/python/src/MANIFEST.in b/src/python/grpcio/MANIFEST.in
similarity index 100%
rename from src/python/src/MANIFEST.in
rename to src/python/grpcio/MANIFEST.in
diff --git a/src/python/src/README.rst b/src/python/grpcio/README.rst
similarity index 100%
rename from src/python/src/README.rst
rename to src/python/grpcio/README.rst
diff --git a/src/python/src/commands.py b/src/python/grpcio/commands.py
similarity index 99%
rename from src/python/src/commands.py
rename to src/python/grpcio/commands.py
index 8e8785501149b380334b3677da6d593132a4ad1e..605d9d5612007550a9f4f920d5ff14e1a7f7b691 100644
--- a/src/python/src/commands.py
+++ b/src/python/grpcio/commands.py
@@ -43,6 +43,7 @@ napoleon_numpy_docstring = True
 html_theme = 'sphinx_rtd_theme'
 """
 
+
 class SphinxDocumentation(setuptools.Command):
   """Command to generate documentation via sphinx."""
 
diff --git a/src/python/interop/interop/__init__.py b/src/python/grpcio/grpc/__init__.py
similarity index 100%
rename from src/python/interop/interop/__init__.py
rename to src/python/grpcio/grpc/__init__.py
diff --git a/src/python/src/grpc/_adapter/.gitignore b/src/python/grpcio/grpc/_adapter/.gitignore
similarity index 100%
rename from src/python/src/grpc/_adapter/.gitignore
rename to src/python/grpcio/grpc/_adapter/.gitignore
diff --git a/src/python/src/grpc/__init__.py b/src/python/grpcio/grpc/_adapter/__init__.py
similarity index 100%
rename from src/python/src/grpc/__init__.py
rename to src/python/grpcio/grpc/_adapter/__init__.py
diff --git a/src/python/src/grpc/_adapter/_c/module.c b/src/python/grpcio/grpc/_adapter/_c/module.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/module.c
rename to src/python/grpcio/grpc/_adapter/_c/module.c
diff --git a/src/python/src/grpc/_adapter/_c/types.c b/src/python/grpcio/grpc/_adapter/_c/types.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types.c
rename to src/python/grpcio/grpc/_adapter/_c/types.c
diff --git a/src/python/src/grpc/_adapter/_c/types.h b/src/python/grpcio/grpc/_adapter/_c/types.h
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types.h
rename to src/python/grpcio/grpc/_adapter/_c/types.h
diff --git a/src/python/src/grpc/_adapter/_c/types/call.c b/src/python/grpcio/grpc/_adapter/_c/types/call.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/call.c
rename to src/python/grpcio/grpc/_adapter/_c/types/call.c
diff --git a/src/python/src/grpc/_adapter/_c/types/channel.c b/src/python/grpcio/grpc/_adapter/_c/types/channel.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/channel.c
rename to src/python/grpcio/grpc/_adapter/_c/types/channel.c
diff --git a/src/python/src/grpc/_adapter/_c/types/client_credentials.c b/src/python/grpcio/grpc/_adapter/_c/types/client_credentials.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/client_credentials.c
rename to src/python/grpcio/grpc/_adapter/_c/types/client_credentials.c
diff --git a/src/python/src/grpc/_adapter/_c/types/completion_queue.c b/src/python/grpcio/grpc/_adapter/_c/types/completion_queue.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/completion_queue.c
rename to src/python/grpcio/grpc/_adapter/_c/types/completion_queue.c
diff --git a/src/python/src/grpc/_adapter/_c/types/server.c b/src/python/grpcio/grpc/_adapter/_c/types/server.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/server.c
rename to src/python/grpcio/grpc/_adapter/_c/types/server.c
diff --git a/src/python/src/grpc/_adapter/_c/types/server_credentials.c b/src/python/grpcio/grpc/_adapter/_c/types/server_credentials.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/types/server_credentials.c
rename to src/python/grpcio/grpc/_adapter/_c/types/server_credentials.c
diff --git a/src/python/src/grpc/_adapter/_c/utility.c b/src/python/grpcio/grpc/_adapter/_c/utility.c
similarity index 100%
rename from src/python/src/grpc/_adapter/_c/utility.c
rename to src/python/grpcio/grpc/_adapter/_c/utility.c
diff --git a/src/python/src/grpc/_adapter/_common.py b/src/python/grpcio/grpc/_adapter/_common.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_common.py
rename to src/python/grpcio/grpc/_adapter/_common.py
diff --git a/src/python/src/grpc/_adapter/_intermediary_low.py b/src/python/grpcio/grpc/_adapter/_intermediary_low.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_intermediary_low.py
rename to src/python/grpcio/grpc/_adapter/_intermediary_low.py
diff --git a/src/python/src/grpc/_adapter/_low.py b/src/python/grpcio/grpc/_adapter/_low.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_low.py
rename to src/python/grpcio/grpc/_adapter/_low.py
diff --git a/src/python/src/grpc/_adapter/_types.py b/src/python/grpcio/grpc/_adapter/_types.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_types.py
rename to src/python/grpcio/grpc/_adapter/_types.py
diff --git a/src/python/src/grpc/_adapter/fore.py b/src/python/grpcio/grpc/_adapter/fore.py
similarity index 100%
rename from src/python/src/grpc/_adapter/fore.py
rename to src/python/grpcio/grpc/_adapter/fore.py
diff --git a/src/python/src/grpc/_adapter/rear.py b/src/python/grpcio/grpc/_adapter/rear.py
similarity index 100%
rename from src/python/src/grpc/_adapter/rear.py
rename to src/python/grpcio/grpc/_adapter/rear.py
diff --git a/src/python/src/grpc/_cython/.gitignore b/src/python/grpcio/grpc/_cython/.gitignore
similarity index 100%
rename from src/python/src/grpc/_cython/.gitignore
rename to src/python/grpcio/grpc/_cython/.gitignore
diff --git a/src/python/src/grpc/_cython/README.rst b/src/python/grpcio/grpc/_cython/README.rst
similarity index 100%
rename from src/python/src/grpc/_cython/README.rst
rename to src/python/grpcio/grpc/_cython/README.rst
diff --git a/src/python/src/grpc/_cython/__init__.py b/src/python/grpcio/grpc/_cython/__init__.py
similarity index 100%
rename from src/python/src/grpc/_cython/__init__.py
rename to src/python/grpcio/grpc/_cython/__init__.py
diff --git a/src/python/src/grpc/_cython/_cygrpc/__init__.py b/src/python/grpcio/grpc/_cython/_cygrpc/__init__.py
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/__init__.py
rename to src/python/grpcio/grpc/_cython/_cygrpc/__init__.py
diff --git a/src/python/src/grpc/_cython/_cygrpc/call.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/call.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/call.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/call.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/call.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/call.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/call.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/call.pyx
diff --git a/src/python/src/grpc/_cython/_cygrpc/channel.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/channel.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/channel.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/channel.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx
diff --git a/src/python/src/grpc/_cython/_cygrpc/completion_queue.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/completion_queue.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/completion_queue.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/completion_queue.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx
diff --git a/src/python/src/grpc/_cython/_cygrpc/credentials.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/credentials.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/credentials.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/credentials.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx
diff --git a/src/python/src/grpc/_cython/_cygrpc/grpc.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/grpc.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/records.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/records.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/records.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/records.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/records.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/records.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/records.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/records.pyx
diff --git a/src/python/src/grpc/_cython/_cygrpc/server.pxd b/src/python/grpcio/grpc/_cython/_cygrpc/server.pxd
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/server.pxd
rename to src/python/grpcio/grpc/_cython/_cygrpc/server.pxd
diff --git a/src/python/src/grpc/_cython/_cygrpc/server.pyx b/src/python/grpcio/grpc/_cython/_cygrpc/server.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/_cygrpc/server.pyx
rename to src/python/grpcio/grpc/_cython/_cygrpc/server.pyx
diff --git a/src/python/src/grpc/_cython/adapter_low.py b/src/python/grpcio/grpc/_cython/adapter_low.py
similarity index 100%
rename from src/python/src/grpc/_cython/adapter_low.py
rename to src/python/grpcio/grpc/_cython/adapter_low.py
diff --git a/src/python/src/grpc/_cython/cygrpc.pyx b/src/python/grpcio/grpc/_cython/cygrpc.pyx
similarity index 100%
rename from src/python/src/grpc/_cython/cygrpc.pyx
rename to src/python/grpcio/grpc/_cython/cygrpc.pyx
diff --git a/src/python/src/grpc/_adapter/__init__.py b/src/python/grpcio/grpc/_links/__init__.py
similarity index 100%
rename from src/python/src/grpc/_adapter/__init__.py
rename to src/python/grpcio/grpc/_links/__init__.py
diff --git a/src/python/src/grpc/_links/invocation.py b/src/python/grpcio/grpc/_links/invocation.py
similarity index 100%
rename from src/python/src/grpc/_links/invocation.py
rename to src/python/grpcio/grpc/_links/invocation.py
diff --git a/src/python/src/grpc/_links/service.py b/src/python/grpcio/grpc/_links/service.py
similarity index 100%
rename from src/python/src/grpc/_links/service.py
rename to src/python/grpcio/grpc/_links/service.py
diff --git a/src/python/src/grpc/_junkdrawer/__init__.py b/src/python/grpcio/grpc/early_adopter/__init__.py
similarity index 100%
rename from src/python/src/grpc/_junkdrawer/__init__.py
rename to src/python/grpcio/grpc/early_adopter/__init__.py
diff --git a/src/python/src/grpc/early_adopter/implementations.py b/src/python/grpcio/grpc/early_adopter/implementations.py
similarity index 100%
rename from src/python/src/grpc/early_adopter/implementations.py
rename to src/python/grpcio/grpc/early_adopter/implementations.py
diff --git a/src/python/src/grpc/_links/__init__.py b/src/python/grpcio/grpc/framework/__init__.py
similarity index 100%
rename from src/python/src/grpc/_links/__init__.py
rename to src/python/grpcio/grpc/framework/__init__.py
diff --git a/src/python/src/grpc/framework/alpha/__init__.py b/src/python/grpcio/grpc/framework/alpha/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/__init__.py
rename to src/python/grpcio/grpc/framework/alpha/__init__.py
diff --git a/src/python/src/grpc/framework/alpha/_face_utilities.py b/src/python/grpcio/grpc/framework/alpha/_face_utilities.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/_face_utilities.py
rename to src/python/grpcio/grpc/framework/alpha/_face_utilities.py
diff --git a/src/python/src/grpc/framework/alpha/_reexport.py b/src/python/grpcio/grpc/framework/alpha/_reexport.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/_reexport.py
rename to src/python/grpcio/grpc/framework/alpha/_reexport.py
diff --git a/src/python/src/grpc/framework/alpha/exceptions.py b/src/python/grpcio/grpc/framework/alpha/exceptions.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/exceptions.py
rename to src/python/grpcio/grpc/framework/alpha/exceptions.py
diff --git a/src/python/src/grpc/framework/alpha/interfaces.py b/src/python/grpcio/grpc/framework/alpha/interfaces.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/interfaces.py
rename to src/python/grpcio/grpc/framework/alpha/interfaces.py
diff --git a/src/python/src/grpc/framework/alpha/utilities.py b/src/python/grpcio/grpc/framework/alpha/utilities.py
similarity index 100%
rename from src/python/src/grpc/framework/alpha/utilities.py
rename to src/python/grpcio/grpc/framework/alpha/utilities.py
diff --git a/src/python/src/grpc/early_adopter/__init__.py b/src/python/grpcio/grpc/framework/base/__init__.py
similarity index 100%
rename from src/python/src/grpc/early_adopter/__init__.py
rename to src/python/grpcio/grpc/framework/base/__init__.py
diff --git a/src/python/src/grpc/framework/base/_cancellation.py b/src/python/grpcio/grpc/framework/base/_cancellation.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_cancellation.py
rename to src/python/grpcio/grpc/framework/base/_cancellation.py
diff --git a/src/python/src/grpc/framework/base/_constants.py b/src/python/grpcio/grpc/framework/base/_constants.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_constants.py
rename to src/python/grpcio/grpc/framework/base/_constants.py
diff --git a/src/python/src/grpc/framework/base/_context.py b/src/python/grpcio/grpc/framework/base/_context.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_context.py
rename to src/python/grpcio/grpc/framework/base/_context.py
diff --git a/src/python/src/grpc/framework/base/_emission.py b/src/python/grpcio/grpc/framework/base/_emission.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_emission.py
rename to src/python/grpcio/grpc/framework/base/_emission.py
diff --git a/src/python/src/grpc/framework/base/_ends.py b/src/python/grpcio/grpc/framework/base/_ends.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_ends.py
rename to src/python/grpcio/grpc/framework/base/_ends.py
diff --git a/src/python/src/grpc/framework/base/_expiration.py b/src/python/grpcio/grpc/framework/base/_expiration.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_expiration.py
rename to src/python/grpcio/grpc/framework/base/_expiration.py
diff --git a/src/python/src/grpc/framework/base/_ingestion.py b/src/python/grpcio/grpc/framework/base/_ingestion.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_ingestion.py
rename to src/python/grpcio/grpc/framework/base/_ingestion.py
diff --git a/src/python/src/grpc/framework/base/_interfaces.py b/src/python/grpcio/grpc/framework/base/_interfaces.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_interfaces.py
rename to src/python/grpcio/grpc/framework/base/_interfaces.py
diff --git a/src/python/src/grpc/framework/base/_reception.py b/src/python/grpcio/grpc/framework/base/_reception.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_reception.py
rename to src/python/grpcio/grpc/framework/base/_reception.py
diff --git a/src/python/src/grpc/framework/base/_termination.py b/src/python/grpcio/grpc/framework/base/_termination.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_termination.py
rename to src/python/grpcio/grpc/framework/base/_termination.py
diff --git a/src/python/src/grpc/framework/base/_transmission.py b/src/python/grpcio/grpc/framework/base/_transmission.py
similarity index 100%
rename from src/python/src/grpc/framework/base/_transmission.py
rename to src/python/grpcio/grpc/framework/base/_transmission.py
diff --git a/src/python/src/grpc/framework/base/exceptions.py b/src/python/grpcio/grpc/framework/base/exceptions.py
similarity index 100%
rename from src/python/src/grpc/framework/base/exceptions.py
rename to src/python/grpcio/grpc/framework/base/exceptions.py
diff --git a/src/python/src/grpc/framework/base/implementations.py b/src/python/grpcio/grpc/framework/base/implementations.py
similarity index 100%
rename from src/python/src/grpc/framework/base/implementations.py
rename to src/python/grpcio/grpc/framework/base/implementations.py
diff --git a/src/python/src/grpc/framework/base/in_memory.py b/src/python/grpcio/grpc/framework/base/in_memory.py
similarity index 100%
rename from src/python/src/grpc/framework/base/in_memory.py
rename to src/python/grpcio/grpc/framework/base/in_memory.py
diff --git a/src/python/src/grpc/framework/base/interfaces.py b/src/python/grpcio/grpc/framework/base/interfaces.py
similarity index 100%
rename from src/python/src/grpc/framework/base/interfaces.py
rename to src/python/grpcio/grpc/framework/base/interfaces.py
diff --git a/src/python/src/grpc/framework/base/null.py b/src/python/grpcio/grpc/framework/base/null.py
similarity index 100%
rename from src/python/src/grpc/framework/base/null.py
rename to src/python/grpcio/grpc/framework/base/null.py
diff --git a/src/python/src/grpc/framework/base/util.py b/src/python/grpcio/grpc/framework/base/util.py
similarity index 100%
rename from src/python/src/grpc/framework/base/util.py
rename to src/python/grpcio/grpc/framework/base/util.py
diff --git a/src/python/src/grpc/framework/__init__.py b/src/python/grpcio/grpc/framework/common/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/__init__.py
rename to src/python/grpcio/grpc/framework/common/__init__.py
diff --git a/src/python/src/grpc/framework/common/cardinality.py b/src/python/grpcio/grpc/framework/common/cardinality.py
similarity index 100%
rename from src/python/src/grpc/framework/common/cardinality.py
rename to src/python/grpcio/grpc/framework/common/cardinality.py
diff --git a/src/python/src/grpc/framework/common/style.py b/src/python/grpcio/grpc/framework/common/style.py
similarity index 100%
rename from src/python/src/grpc/framework/common/style.py
rename to src/python/grpcio/grpc/framework/common/style.py
diff --git a/src/python/src/grpc/framework/base/__init__.py b/src/python/grpcio/grpc/framework/face/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/base/__init__.py
rename to src/python/grpcio/grpc/framework/face/__init__.py
diff --git a/src/python/src/grpc/framework/face/_calls.py b/src/python/grpcio/grpc/framework/face/_calls.py
similarity index 100%
rename from src/python/src/grpc/framework/face/_calls.py
rename to src/python/grpcio/grpc/framework/face/_calls.py
diff --git a/src/python/src/grpc/framework/face/_control.py b/src/python/grpcio/grpc/framework/face/_control.py
similarity index 100%
rename from src/python/src/grpc/framework/face/_control.py
rename to src/python/grpcio/grpc/framework/face/_control.py
diff --git a/src/python/src/grpc/framework/face/_service.py b/src/python/grpcio/grpc/framework/face/_service.py
similarity index 100%
rename from src/python/src/grpc/framework/face/_service.py
rename to src/python/grpcio/grpc/framework/face/_service.py
diff --git a/src/python/src/grpc/framework/face/demonstration.py b/src/python/grpcio/grpc/framework/face/demonstration.py
similarity index 100%
rename from src/python/src/grpc/framework/face/demonstration.py
rename to src/python/grpcio/grpc/framework/face/demonstration.py
diff --git a/src/python/src/grpc/framework/face/exceptions.py b/src/python/grpcio/grpc/framework/face/exceptions.py
similarity index 100%
rename from src/python/src/grpc/framework/face/exceptions.py
rename to src/python/grpcio/grpc/framework/face/exceptions.py
diff --git a/src/python/src/grpc/framework/face/implementations.py b/src/python/grpcio/grpc/framework/face/implementations.py
similarity index 100%
rename from src/python/src/grpc/framework/face/implementations.py
rename to src/python/grpcio/grpc/framework/face/implementations.py
diff --git a/src/python/src/grpc/framework/face/interfaces.py b/src/python/grpcio/grpc/framework/face/interfaces.py
similarity index 100%
rename from src/python/src/grpc/framework/face/interfaces.py
rename to src/python/grpcio/grpc/framework/face/interfaces.py
diff --git a/src/python/src/grpc/framework/face/utilities.py b/src/python/grpcio/grpc/framework/face/utilities.py
similarity index 100%
rename from src/python/src/grpc/framework/face/utilities.py
rename to src/python/grpcio/grpc/framework/face/utilities.py
diff --git a/src/python/src/grpc/framework/common/__init__.py b/src/python/grpcio/grpc/framework/foundation/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/common/__init__.py
rename to src/python/grpcio/grpc/framework/foundation/__init__.py
diff --git a/src/python/src/grpc/framework/foundation/_timer_future.py b/src/python/grpcio/grpc/framework/foundation/_timer_future.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/_timer_future.py
rename to src/python/grpcio/grpc/framework/foundation/_timer_future.py
diff --git a/src/python/src/grpc/framework/foundation/abandonment.py b/src/python/grpcio/grpc/framework/foundation/abandonment.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/abandonment.py
rename to src/python/grpcio/grpc/framework/foundation/abandonment.py
diff --git a/src/python/src/grpc/framework/foundation/activated.py b/src/python/grpcio/grpc/framework/foundation/activated.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/activated.py
rename to src/python/grpcio/grpc/framework/foundation/activated.py
diff --git a/src/python/src/grpc/framework/foundation/callable_util.py b/src/python/grpcio/grpc/framework/foundation/callable_util.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/callable_util.py
rename to src/python/grpcio/grpc/framework/foundation/callable_util.py
diff --git a/src/python/src/grpc/framework/foundation/future.py b/src/python/grpcio/grpc/framework/foundation/future.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/future.py
rename to src/python/grpcio/grpc/framework/foundation/future.py
diff --git a/src/python/src/grpc/framework/foundation/later.py b/src/python/grpcio/grpc/framework/foundation/later.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/later.py
rename to src/python/grpcio/grpc/framework/foundation/later.py
diff --git a/src/python/src/grpc/framework/foundation/logging_pool.py b/src/python/grpcio/grpc/framework/foundation/logging_pool.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/logging_pool.py
rename to src/python/grpcio/grpc/framework/foundation/logging_pool.py
diff --git a/src/python/src/grpc/framework/foundation/relay.py b/src/python/grpcio/grpc/framework/foundation/relay.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/relay.py
rename to src/python/grpcio/grpc/framework/foundation/relay.py
diff --git a/src/python/src/grpc/framework/foundation/stream.py b/src/python/grpcio/grpc/framework/foundation/stream.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/stream.py
rename to src/python/grpcio/grpc/framework/foundation/stream.py
diff --git a/src/python/src/grpc/framework/foundation/stream_util.py b/src/python/grpcio/grpc/framework/foundation/stream_util.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/stream_util.py
rename to src/python/grpcio/grpc/framework/foundation/stream_util.py
diff --git a/src/python/src/grpc/framework/face/__init__.py b/src/python/grpcio/grpc/framework/interfaces/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/face/__init__.py
rename to src/python/grpcio/grpc/framework/interfaces/__init__.py
diff --git a/src/python/src/grpc/framework/face/testing/__init__.py b/src/python/grpcio/grpc/framework/interfaces/links/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/__init__.py
rename to src/python/grpcio/grpc/framework/interfaces/links/__init__.py
diff --git a/src/python/src/grpc/framework/interfaces/links/links.py b/src/python/grpcio/grpc/framework/interfaces/links/links.py
similarity index 100%
rename from src/python/src/grpc/framework/interfaces/links/links.py
rename to src/python/grpcio/grpc/framework/interfaces/links/links.py
diff --git a/src/python/src/grpc/framework/interfaces/links/utilities.py b/src/python/grpcio/grpc/framework/interfaces/links/utilities.py
similarity index 100%
rename from src/python/src/grpc/framework/interfaces/links/utilities.py
rename to src/python/grpcio/grpc/framework/interfaces/links/utilities.py
diff --git a/src/python/src/setup.cfg b/src/python/grpcio/setup.cfg
similarity index 100%
rename from src/python/src/setup.cfg
rename to src/python/grpcio/setup.cfg
diff --git a/src/python/src/setup.py b/src/python/grpcio/setup.py
similarity index 85%
rename from src/python/src/setup.py
rename to src/python/grpcio/setup.py
index 0310a83a7bad5b69ce461ea27d4c536582539a89..1333ae0086a7146557584d8873fe41c6376d2d35 100644
--- a/src/python/src/setup.py
+++ b/src/python/grpcio/setup.py
@@ -79,29 +79,11 @@ _C_EXTENSION_MODULE = _core.Extension(
 _EXTENSION_MODULES = [_C_EXTENSION_MODULE]
 
 _PACKAGES = (
-    'grpc',
-    'grpc._adapter',
-    'grpc._junkdrawer',
-    'grpc._links',
-    'grpc.early_adopter',
-    'grpc.framework',
-    'grpc.framework.alpha',
-    'grpc.framework.base',
-    'grpc.framework.common',
-    'grpc.framework.face',
-    'grpc.framework.face.testing',
-    'grpc.framework.foundation',
-    'grpc.framework.interfaces',
-    'grpc.framework.interfaces.links',
+    setuptools.find_packages('.', exclude=['*._cython', '*._cython.*'])
 )
 
 _PACKAGE_DIRECTORIES = {
-    'grpc': 'grpc',
-    'grpc._adapter': 'grpc/_adapter',
-    'grpc._junkdrawer': 'grpc/_junkdrawer',
-    'grpc._links': 'grpc/_links',
-    'grpc.early_adopter': 'grpc/early_adopter',
-    'grpc.framework': 'grpc/framework',
+    '': '.',
 }
 
 _INSTALL_REQUIRES = (
diff --git a/src/python/src/grpc/framework/foundation/__init__.py b/src/python/grpcio_test/grpc_interop/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/__init__.py
rename to src/python/grpcio_test/grpc_interop/__init__.py
diff --git a/src/python/interop/interop/_insecure_interop_test.py b/src/python/grpcio_test/grpc_interop/_insecure_interop_test.py
similarity index 96%
rename from src/python/interop/interop/_insecure_interop_test.py
rename to src/python/grpcio_test/grpc_interop/_insecure_interop_test.py
index 98ea3a664886e07f64836a344418a243673348ac..825988a072c4842e93cdd742ff079d136924ff34 100644
--- a/src/python/interop/interop/_insecure_interop_test.py
+++ b/src/python/grpcio_test/grpc_interop/_insecure_interop_test.py
@@ -33,8 +33,8 @@ import unittest
 
 from grpc.early_adopter import implementations
 
-from interop import _interop_test_case
-from interop import methods
+from grpc_interop import _interop_test_case
+from grpc_interop import methods
 
 
 class InsecureInteropTest(
diff --git a/src/python/interop/interop/_interop_test_case.py b/src/python/grpcio_test/grpc_interop/_interop_test_case.py
similarity index 98%
rename from src/python/interop/interop/_interop_test_case.py
rename to src/python/grpcio_test/grpc_interop/_interop_test_case.py
index f40ef0ec83896839a1110cfaebdaaa2f8381b38d..ed8f7ef0099871ba6e66b1ed71ef3ef8c8809401 100644
--- a/src/python/interop/interop/_interop_test_case.py
+++ b/src/python/grpcio_test/grpc_interop/_interop_test_case.py
@@ -29,7 +29,7 @@
 
 """Common code for unit tests of the interoperability test code."""
 
-from interop import methods
+from grpc_interop import methods
 
 
 class InteropTestCase(object):
diff --git a/src/python/interop/interop/_secure_interop_test.py b/src/python/grpcio_test/grpc_interop/_secure_interop_test.py
similarity index 95%
rename from src/python/interop/interop/_secure_interop_test.py
rename to src/python/grpcio_test/grpc_interop/_secure_interop_test.py
index be7618f54986c3fa21468cf31283eb756710eea0..a2682dee9929d489a1e9c522e883e16ce1cf26da 100644
--- a/src/python/interop/interop/_secure_interop_test.py
+++ b/src/python/grpcio_test/grpc_interop/_secure_interop_test.py
@@ -33,9 +33,9 @@ import unittest
 
 from grpc.early_adopter import implementations
 
-from interop import _interop_test_case
-from interop import methods
-from interop import resources
+from grpc_interop import _interop_test_case
+from grpc_interop import methods
+from grpc_interop import resources
 
 _SERVER_HOST_OVERRIDE = 'foo.test.google.fr'
 
diff --git a/src/python/interop/interop/client.py b/src/python/grpcio_test/grpc_interop/client.py
similarity index 98%
rename from src/python/interop/interop/client.py
rename to src/python/grpcio_test/grpc_interop/client.py
index 41f0d9453932ad994ff877c8d99822e173df5d8e..2dd2103cbec4caabbfc22db1c35a464c5e85f41c 100644
--- a/src/python/interop/interop/client.py
+++ b/src/python/grpcio_test/grpc_interop/client.py
@@ -34,8 +34,8 @@ from oauth2client import client as oauth2client_client
 
 from grpc.early_adopter import implementations
 
-from interop import methods
-from interop import resources
+from grpc_interop import methods
+from grpc_interop import resources
 
 _ONE_DAY_IN_SECONDS = 60 * 60 * 24
 
diff --git a/src/python/interop/interop/credentials/README b/src/python/grpcio_test/grpc_interop/credentials/README
similarity index 100%
rename from src/python/interop/interop/credentials/README
rename to src/python/grpcio_test/grpc_interop/credentials/README
diff --git a/src/python/interop/interop/credentials/ca.pem b/src/python/grpcio_test/grpc_interop/credentials/ca.pem
similarity index 100%
rename from src/python/interop/interop/credentials/ca.pem
rename to src/python/grpcio_test/grpc_interop/credentials/ca.pem
diff --git a/src/python/interop/interop/credentials/server1.key b/src/python/grpcio_test/grpc_interop/credentials/server1.key
similarity index 100%
rename from src/python/interop/interop/credentials/server1.key
rename to src/python/grpcio_test/grpc_interop/credentials/server1.key
diff --git a/src/python/interop/interop/credentials/server1.pem b/src/python/grpcio_test/grpc_interop/credentials/server1.pem
similarity index 100%
rename from src/python/interop/interop/credentials/server1.pem
rename to src/python/grpcio_test/grpc_interop/credentials/server1.pem
diff --git a/src/python/interop/interop/empty_pb2.py b/src/python/grpcio_test/grpc_interop/empty_pb2.py
similarity index 100%
rename from src/python/interop/interop/empty_pb2.py
rename to src/python/grpcio_test/grpc_interop/empty_pb2.py
diff --git a/src/python/interop/interop/messages_pb2.py b/src/python/grpcio_test/grpc_interop/messages_pb2.py
similarity index 100%
rename from src/python/interop/interop/messages_pb2.py
rename to src/python/grpcio_test/grpc_interop/messages_pb2.py
diff --git a/src/python/interop/interop/methods.py b/src/python/grpcio_test/grpc_interop/methods.py
similarity index 99%
rename from src/python/interop/interop/methods.py
rename to src/python/grpcio_test/grpc_interop/methods.py
index 194afadb17fee72bc4281f1599c0197632fa94b8..f4c94685eea3a738228029e49808009c15bc3826 100644
--- a/src/python/interop/interop/methods.py
+++ b/src/python/grpcio_test/grpc_interop/methods.py
@@ -38,8 +38,8 @@ from oauth2client import client as oauth2client_client
 
 from grpc.framework.alpha import utilities
 
-from interop import empty_pb2
-from interop import messages_pb2
+from grpc_interop import empty_pb2
+from grpc_interop import messages_pb2
 
 _TIMEOUT = 7
 
diff --git a/src/python/interop/interop/resources.py b/src/python/grpcio_test/grpc_interop/resources.py
similarity index 100%
rename from src/python/interop/interop/resources.py
rename to src/python/grpcio_test/grpc_interop/resources.py
diff --git a/src/python/interop/interop/server.py b/src/python/grpcio_test/grpc_interop/server.py
similarity index 97%
rename from src/python/interop/interop/server.py
rename to src/python/grpcio_test/grpc_interop/server.py
index a67d4120389f83dfc76a9a01354830f25420df16..60f630a6be5c451cf632f4d89972e0caca0623b8 100644
--- a/src/python/interop/interop/server.py
+++ b/src/python/grpcio_test/grpc_interop/server.py
@@ -35,8 +35,8 @@ import time
 
 from grpc.early_adopter import implementations
 
-from interop import methods
-from interop import resources
+from grpc_interop import methods
+from grpc_interop import resources
 
 _ONE_DAY_IN_SECONDS = 60 * 60 * 24
 
diff --git a/src/python/interop/interop/test_pb2.py b/src/python/grpcio_test/grpc_interop/test_pb2.py
similarity index 100%
rename from src/python/interop/interop/test_pb2.py
rename to src/python/grpcio_test/grpc_interop/test_pb2.py
diff --git a/src/python/src/grpc/framework/interfaces/__init__.py b/src/python/grpcio_test/grpc_test/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/interfaces/__init__.py
rename to src/python/grpcio_test/grpc_test/__init__.py
diff --git a/src/python/grpcio_test/grpc_test/_adapter/.gitignore b/src/python/grpcio_test/grpc_test/_adapter/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..a6f96cd6dbb189f379fbfdfaef86003fe1d56503
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/_adapter/.gitignore
@@ -0,0 +1,5 @@
+*.a
+*.so
+*.dll
+*.pyc
+*.pyd
diff --git a/src/python/src/grpc/framework/interfaces/links/__init__.py b/src/python/grpcio_test/grpc_test/_adapter/__init__.py
similarity index 100%
rename from src/python/src/grpc/framework/interfaces/links/__init__.py
rename to src/python/grpcio_test/grpc_test/_adapter/__init__.py
diff --git a/src/python/src/grpc/_adapter/_blocking_invocation_inline_service_test.py b/src/python/grpcio_test/grpc_test/_adapter/_blocking_invocation_inline_service_test.py
similarity index 92%
rename from src/python/src/grpc/_adapter/_blocking_invocation_inline_service_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_blocking_invocation_inline_service_test.py
index 7a8ff0ad891bc4a887dbfe95a87926aee9ac169c..a1f776211c48d70c79a63b4ba8ec0f16f79c9a12 100644
--- a/src/python/src/grpc/_adapter/_blocking_invocation_inline_service_test.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_blocking_invocation_inline_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc._adapter import _face_test_case
-from grpc.framework.face.testing import blocking_invocation_inline_service_test_case as test_case
+from grpc_test._adapter import _face_test_case
+from grpc_test.framework.face.testing import blocking_invocation_inline_service_test_case as test_case
 
 
 class BlockingInvocationInlineServiceTest(
diff --git a/src/python/src/grpc/_adapter/_c_test.py b/src/python/grpcio_test/grpc_test/_adapter/_c_test.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_c_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_c_test.py
diff --git a/src/python/src/grpc/_adapter/_event_invocation_synchronous_event_service_test.py b/src/python/grpcio_test/grpc_test/_adapter/_event_invocation_synchronous_event_service_test.py
similarity index 92%
rename from src/python/src/grpc/_adapter/_event_invocation_synchronous_event_service_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_event_invocation_synchronous_event_service_test.py
index b8ceb75d680da22b44ffec5c4b22bffd9d9b6dee..0d01ebc8dcaf22766e6200322f0a0f4e1690d65c 100644
--- a/src/python/src/grpc/_adapter/_event_invocation_synchronous_event_service_test.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_event_invocation_synchronous_event_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc._adapter import _face_test_case
-from grpc.framework.face.testing import event_invocation_synchronous_event_service_test_case as test_case
+from grpc_test._adapter import _face_test_case
+from grpc_test.framework.face.testing import event_invocation_synchronous_event_service_test_case as test_case
 
 
 class EventInvocationSynchronousEventServiceTest(
diff --git a/src/python/src/grpc/_adapter/_face_test_case.py b/src/python/grpcio_test/grpc_test/_adapter/_face_test_case.py
similarity index 96%
rename from src/python/src/grpc/_adapter/_face_test_case.py
rename to src/python/grpcio_test/grpc_test/_adapter/_face_test_case.py
index 5fa974ed06c094c57f9812b97bc5098993af9bbd..dfbd0b60af59547d0e93a86d9412a6f74ec304ff 100644
--- a/src/python/src/grpc/_adapter/_face_test_case.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_face_test_case.py
@@ -36,10 +36,10 @@ from grpc._adapter import rear
 from grpc.framework.base import util
 from grpc.framework.base import implementations as base_implementations
 from grpc.framework.face import implementations as face_implementations
-from grpc.framework.face.testing import coverage
-from grpc.framework.face.testing import serial
-from grpc.framework.face.testing import test_case
 from grpc.framework.foundation import logging_pool
+from grpc_test.framework.face.testing import coverage
+from grpc_test.framework.face.testing import serial
+from grpc_test.framework.face.testing import test_case
 
 _TIMEOUT = 3
 _MAXIMUM_TIMEOUT = 90
diff --git a/src/python/src/grpc/_adapter/_future_invocation_asynchronous_event_service_test.py b/src/python/grpcio_test/grpc_test/_adapter/_future_invocation_asynchronous_event_service_test.py
similarity index 92%
rename from src/python/src/grpc/_adapter/_future_invocation_asynchronous_event_service_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_future_invocation_asynchronous_event_service_test.py
index 3773e6557556cc735078515d76c847db3373c8f2..ea4a6a0bae270c3950979f2db642c9ab80029f3b 100644
--- a/src/python/src/grpc/_adapter/_future_invocation_asynchronous_event_service_test.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_future_invocation_asynchronous_event_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc._adapter import _face_test_case
-from grpc.framework.face.testing import future_invocation_asynchronous_event_service_test_case as test_case
+from grpc_test._adapter import _face_test_case
+from grpc_test.framework.face.testing import future_invocation_asynchronous_event_service_test_case as test_case
 
 
 class FutureInvocationAsynchronousEventServiceTest(
diff --git a/src/python/src/grpc/_adapter/_intermediary_low_test.py b/src/python/grpcio_test/grpc_test/_adapter/_intermediary_low_test.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_intermediary_low_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_intermediary_low_test.py
diff --git a/src/python/src/grpc/_adapter/_links_test.py b/src/python/grpcio_test/grpc_test/_adapter/_links_test.py
similarity index 99%
rename from src/python/src/grpc/_adapter/_links_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_links_test.py
index 4729b84f84a0c3da269eb01ce4dff74e6f0aaf54..c4686b327a96e04fd8cce2a6492c7480f1d83e66 100644
--- a/src/python/src/grpc/_adapter/_links_test.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_links_test.py
@@ -32,12 +32,12 @@
 import threading
 import unittest
 
-from grpc._adapter import _proto_scenarios
-from grpc._adapter import _test_links
 from grpc._adapter import fore
 from grpc._adapter import rear
 from grpc.framework.base import interfaces
 from grpc.framework.foundation import logging_pool
+from grpc_test._adapter import _proto_scenarios
+from grpc_test._adapter import _test_links
 
 _IDENTITY = lambda x: x
 _TIMEOUT = 32
diff --git a/src/python/src/grpc/_adapter/_lonely_rear_link_test.py b/src/python/grpcio_test/grpc_test/_adapter/_lonely_rear_link_test.py
similarity index 98%
rename from src/python/src/grpc/_adapter/_lonely_rear_link_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_lonely_rear_link_test.py
index 7f5021f40e1887930361a75d99d61d8c16bebbaf..9b5758f60f0c55bfc78d1e6dacec518a01045d18 100644
--- a/src/python/src/grpc/_adapter/_lonely_rear_link_test.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_lonely_rear_link_test.py
@@ -31,10 +31,10 @@
 
 import unittest
 
-from grpc._adapter import _test_links
 from grpc._adapter import rear
 from grpc.framework.base import interfaces
 from grpc.framework.foundation import logging_pool
+from grpc_test._adapter import _test_links
 
 _IDENTITY = lambda x: x
 _TIMEOUT = 2
diff --git a/src/python/src/grpc/_adapter/_low_test.py b/src/python/grpcio_test/grpc_test/_adapter/_low_test.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_low_test.py
rename to src/python/grpcio_test/grpc_test/_adapter/_low_test.py
diff --git a/src/python/src/grpc/_adapter/_proto_scenarios.py b/src/python/grpcio_test/grpc_test/_adapter/_proto_scenarios.py
similarity index 99%
rename from src/python/src/grpc/_adapter/_proto_scenarios.py
rename to src/python/grpcio_test/grpc_test/_adapter/_proto_scenarios.py
index 60a622ba8b8891f3b2dfeb0bde5ce3144aace278..b3d6ec8607b4ede9155fbe43a20ad44a8212b12d 100644
--- a/src/python/src/grpc/_adapter/_proto_scenarios.py
+++ b/src/python/grpcio_test/grpc_test/_adapter/_proto_scenarios.py
@@ -32,7 +32,7 @@
 import abc
 import threading
 
-from grpc._junkdrawer import math_pb2
+from grpc_test._junkdrawer import math_pb2
 
 
 class ProtoScenario(object):
diff --git a/src/python/src/grpc/_adapter/_test_links.py b/src/python/grpcio_test/grpc_test/_adapter/_test_links.py
similarity index 100%
rename from src/python/src/grpc/_adapter/_test_links.py
rename to src/python/grpcio_test/grpc_test/_adapter/_test_links.py
diff --git a/src/python/grpcio_test/grpc_test/_cython/.gitignore b/src/python/grpcio_test/grpc_test/_cython/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c31502928856ecbe3b13e03638cafc6b59284b32
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/_cython/.gitignore
@@ -0,0 +1,7 @@
+*.h
+*.c
+*.a
+*.so
+*.dll
+*.pyc
+*.pyd
diff --git a/src/python/grpcio_test/grpc_test/_cython/__init__.py b/src/python/grpcio_test/grpc_test/_cython/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..b89398809fabc7c2aab0462cc52a91e31b76e9e6
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/_cython/__init__.py
@@ -0,0 +1,28 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/python/src/grpc/_cython/adapter_low_test.py b/src/python/grpcio_test/grpc_test/_cython/adapter_low_test.py
similarity index 100%
rename from src/python/src/grpc/_cython/adapter_low_test.py
rename to src/python/grpcio_test/grpc_test/_cython/adapter_low_test.py
diff --git a/src/python/src/grpc/_cython/cygrpc_test.py b/src/python/grpcio_test/grpc_test/_cython/cygrpc_test.py
similarity index 99%
rename from src/python/src/grpc/_cython/cygrpc_test.py
rename to src/python/grpcio_test/grpc_test/_cython/cygrpc_test.py
index 22d210b16b5189ba6fa690d14a546c7bc2118449..637506b42e14aee6a7739dd9e88536d4364ec50e 100644
--- a/src/python/src/grpc/_cython/cygrpc_test.py
+++ b/src/python/grpcio_test/grpc_test/_cython/cygrpc_test.py
@@ -31,7 +31,7 @@ import time
 import unittest
 
 from grpc._cython import cygrpc
-from grpc._cython import test_utilities
+from grpc_test._cython import test_utilities
 
 
 class TypeSmokeTest(unittest.TestCase):
diff --git a/src/python/src/grpc/_cython/test_utilities.py b/src/python/grpcio_test/grpc_test/_cython/test_utilities.py
similarity index 100%
rename from src/python/src/grpc/_cython/test_utilities.py
rename to src/python/grpcio_test/grpc_test/_cython/test_utilities.py
diff --git a/src/python/grpcio_test/grpc_test/_junkdrawer/__init__.py b/src/python/grpcio_test/grpc_test/_junkdrawer/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..708651910607ffb686d781713f6893567821b9fd
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/_junkdrawer/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/src/grpc/_junkdrawer/math_pb2.py b/src/python/grpcio_test/grpc_test/_junkdrawer/math_pb2.py
similarity index 100%
rename from src/python/src/grpc/_junkdrawer/math_pb2.py
rename to src/python/grpcio_test/grpc_test/_junkdrawer/math_pb2.py
diff --git a/src/python/src/grpc/_junkdrawer/stock_pb2.py b/src/python/grpcio_test/grpc_test/_junkdrawer/stock_pb2.py
similarity index 100%
rename from src/python/src/grpc/_junkdrawer/stock_pb2.py
rename to src/python/grpcio_test/grpc_test/_junkdrawer/stock_pb2.py
diff --git a/src/python/grpcio_test/grpc_test/_links/__init__.py b/src/python/grpcio_test/grpc_test/_links/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..708651910607ffb686d781713f6893567821b9fd
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/_links/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/src/grpc/_links/_lonely_invocation_link_test.py b/src/python/grpcio_test/grpc_test/_links/_lonely_invocation_link_test.py
similarity index 95%
rename from src/python/src/grpc/_links/_lonely_invocation_link_test.py
rename to src/python/grpcio_test/grpc_test/_links/_lonely_invocation_link_test.py
index 3d629f43871fb5d7f3605f78e57f70b5a788b9dc..abe240e07aba62c94aa3e9f27c78728b3c66721c 100644
--- a/src/python/src/grpc/_links/_lonely_invocation_link_test.py
+++ b/src/python/grpcio_test/grpc_test/_links/_lonely_invocation_link_test.py
@@ -33,10 +33,10 @@ import unittest
 
 from grpc._adapter import _intermediary_low
 from grpc._links import invocation
-from grpc.framework.common import test_constants
 from grpc.framework.interfaces.links import links
-from grpc.framework.interfaces.links import test_cases
-from grpc.framework.interfaces.links import test_utilities
+from grpc_test.framework.common import test_constants
+from grpc_test.framework.interfaces.links import test_cases
+from grpc_test.framework.interfaces.links import test_utilities
 
 _NULL_BEHAVIOR = lambda unused_argument: None
 
diff --git a/src/python/src/grpc/_links/_proto_scenarios.py b/src/python/grpcio_test/grpc_test/_links/_proto_scenarios.py
similarity index 98%
rename from src/python/src/grpc/_links/_proto_scenarios.py
rename to src/python/grpcio_test/grpc_test/_links/_proto_scenarios.py
index 320c0e0f5067c82212b7986005a88404f26e247a..0d74d66297e37e5322336b7a4e541ad646535321 100644
--- a/src/python/src/grpc/_links/_proto_scenarios.py
+++ b/src/python/grpcio_test/grpc_test/_links/_proto_scenarios.py
@@ -32,8 +32,8 @@
 import abc
 import threading
 
-from grpc._junkdrawer import math_pb2
-from grpc.framework.common import test_constants
+from grpc_test._junkdrawer import math_pb2
+from grpc_test.framework.common import test_constants
 
 
 class ProtoScenario(object):
diff --git a/src/python/src/grpc/_links/_transmission_test.py b/src/python/grpcio_test/grpc_test/_links/_transmission_test.py
similarity index 97%
rename from src/python/src/grpc/_links/_transmission_test.py
rename to src/python/grpcio_test/grpc_test/_links/_transmission_test.py
index 3eeec03f467d3a9a279f3a81555f2528eedadc35..0531fa1d335c97013e4f7d93e1e919cc394dcd62 100644
--- a/src/python/src/grpc/_links/_transmission_test.py
+++ b/src/python/grpcio_test/grpc_test/_links/_transmission_test.py
@@ -32,13 +32,13 @@
 import unittest
 
 from grpc._adapter import _intermediary_low
-from grpc._links import _proto_scenarios
 from grpc._links import invocation
 from grpc._links import service
-from grpc.framework.common import test_constants
 from grpc.framework.interfaces.links import links
-from grpc.framework.interfaces.links import test_cases
-from grpc.framework.interfaces.links import test_utilities
+from grpc_test._links import _proto_scenarios
+from grpc_test.framework.common import test_constants
+from grpc_test.framework.interfaces.links import test_cases
+from grpc_test.framework.interfaces.links import test_utilities
 
 _IDENTITY = lambda x: x
 
diff --git a/src/python/grpcio_test/grpc_test/early_adopter/__init__.py b/src/python/grpcio_test/grpc_test/early_adopter/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..708651910607ffb686d781713f6893567821b9fd
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/early_adopter/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/src/grpc/early_adopter/implementations_test.py b/src/python/grpcio_test/grpc_test/early_adopter/implementations_test.py
similarity index 99%
rename from src/python/src/grpc/early_adopter/implementations_test.py
rename to src/python/grpcio_test/grpc_test/early_adopter/implementations_test.py
index 49f0e949c45f83721bae63f3435111b4e50bc533..611637e8b87e429f2338971ed12733142485842b 100644
--- a/src/python/src/grpc/early_adopter/implementations_test.py
+++ b/src/python/grpcio_test/grpc_test/early_adopter/implementations_test.py
@@ -35,7 +35,7 @@ import unittest
 
 from grpc.early_adopter import implementations
 from grpc.framework.alpha import utilities
-from grpc._junkdrawer import math_pb2
+from grpc_test._junkdrawer import math_pb2
 
 SERVICE_NAME = 'math.Math'
 
diff --git a/src/python/grpcio_test/grpc_test/framework/__init__.py b/src/python/grpcio_test/grpc_test/framework/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..708651910607ffb686d781713f6893567821b9fd
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio_test/grpc_test/framework/base/__init__.py b/src/python/grpcio_test/grpc_test/framework/base/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..708651910607ffb686d781713f6893567821b9fd
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/base/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/src/grpc/framework/base/implementations_test.py b/src/python/grpcio_test/grpc_test/framework/base/implementations_test.py
similarity index 98%
rename from src/python/src/grpc/framework/base/implementations_test.py
rename to src/python/grpcio_test/grpc_test/framework/base/implementations_test.py
index 72087f44566225f3a2932e5b2d7e6822b2f0f46e..5a7d1398fd420990d456a1acd984b89eabf92aa6 100644
--- a/src/python/src/grpc/framework/base/implementations_test.py
+++ b/src/python/grpcio_test/grpc_test/framework/base/implementations_test.py
@@ -32,9 +32,9 @@
 import unittest
 
 from grpc.framework.base import implementations
-from grpc.framework.base import interfaces_test_case
 from grpc.framework.base import util
 from grpc.framework.foundation import logging_pool
+from grpc_test.framework.base import interfaces_test_case
 
 POOL_MAX_WORKERS = 10
 DEFAULT_TIMEOUT = 30
diff --git a/src/python/src/grpc/framework/base/interfaces_test_case.py b/src/python/grpcio_test/grpc_test/framework/base/interfaces_test_case.py
similarity index 99%
rename from src/python/src/grpc/framework/base/interfaces_test_case.py
rename to src/python/grpcio_test/grpc_test/framework/base/interfaces_test_case.py
index dec10c2924d5cccb50cd630c25596ef909d4558d..be775ad4e00be4a04fd08ea241284678b19cb576 100644
--- a/src/python/src/grpc/framework/base/interfaces_test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/base/interfaces_test_case.py
@@ -35,8 +35,8 @@ import time
 from grpc.framework.base import interfaces
 from grpc.framework.base import util
 from grpc.framework.foundation import stream
-from grpc.framework.foundation import stream_testing
 from grpc.framework.foundation import stream_util
+from grpc_test.framework.foundation import stream_testing
 
 TICK = 0.1
 SMALL_TIMEOUT = TICK * 50
diff --git a/src/python/grpcio_test/grpc_test/framework/common/__init__.py b/src/python/grpcio_test/grpc_test/framework/common/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..708651910607ffb686d781713f6893567821b9fd
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/common/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/src/grpc/framework/common/test_constants.py b/src/python/grpcio_test/grpc_test/framework/common/test_constants.py
similarity index 100%
rename from src/python/src/grpc/framework/common/test_constants.py
rename to src/python/grpcio_test/grpc_test/framework/common/test_constants.py
diff --git a/src/python/src/grpc/framework/common/test_control.py b/src/python/grpcio_test/grpc_test/framework/common/test_control.py
similarity index 100%
rename from src/python/src/grpc/framework/common/test_control.py
rename to src/python/grpcio_test/grpc_test/framework/common/test_control.py
diff --git a/src/python/src/grpc/framework/common/test_coverage.py b/src/python/grpcio_test/grpc_test/framework/common/test_coverage.py
similarity index 100%
rename from src/python/src/grpc/framework/common/test_coverage.py
rename to src/python/grpcio_test/grpc_test/framework/common/test_coverage.py
diff --git a/src/python/grpcio_test/grpc_test/framework/face/__init__.py b/src/python/grpcio_test/grpc_test/framework/face/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..708651910607ffb686d781713f6893567821b9fd
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/face/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/src/grpc/framework/face/_test_case.py b/src/python/grpcio_test/grpc_test/framework/face/_test_case.py
similarity index 95%
rename from src/python/src/grpc/framework/face/_test_case.py
rename to src/python/grpcio_test/grpc_test/framework/face/_test_case.py
index 642d500628de084a2402a02695a86fbac3d52da0..486b6e630e8f6f63787d03c0966ec3e7ae000deb 100644
--- a/src/python/src/grpc/framework/face/_test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/_test_case.py
@@ -30,9 +30,9 @@
 """Common lifecycle code for in-memory-ticket-exchange Face-layer tests."""
 
 from grpc.framework.face import implementations
-from grpc.framework.face.testing import base_util
-from grpc.framework.face.testing import test_case
 from grpc.framework.foundation import logging_pool
+from grpc_test.framework.face.testing import base_util
+from grpc_test.framework.face.testing import test_case
 
 _TIMEOUT = 3
 _MAXIMUM_POOL_SIZE = 10
diff --git a/src/python/src/grpc/framework/face/blocking_invocation_inline_service_test.py b/src/python/grpcio_test/grpc_test/framework/face/blocking_invocation_inline_service_test.py
similarity index 92%
rename from src/python/src/grpc/framework/face/blocking_invocation_inline_service_test.py
rename to src/python/grpcio_test/grpc_test/framework/face/blocking_invocation_inline_service_test.py
index 763f0f0edcc80385ed7872fead7666391fc53dcf..8674666418b40e707cfed0d01183c1674536b8bb 100644
--- a/src/python/src/grpc/framework/face/blocking_invocation_inline_service_test.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/blocking_invocation_inline_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc.framework.face import _test_case
-from grpc.framework.face.testing import blocking_invocation_inline_service_test_case as test_case
+from grpc_test.framework.face import _test_case
+from grpc_test.framework.face.testing import blocking_invocation_inline_service_test_case as test_case
 
 
 class BlockingInvocationInlineServiceTest(
diff --git a/src/python/src/grpc/framework/face/event_invocation_synchronous_event_service_test.py b/src/python/grpcio_test/grpc_test/framework/face/event_invocation_synchronous_event_service_test.py
similarity index 92%
rename from src/python/src/grpc/framework/face/event_invocation_synchronous_event_service_test.py
rename to src/python/grpcio_test/grpc_test/framework/face/event_invocation_synchronous_event_service_test.py
index e1ab3cf71164c064bae93b0c23fa2fbc9509997c..dca373ef7c5b836abd71153966162e51621d71f0 100644
--- a/src/python/src/grpc/framework/face/event_invocation_synchronous_event_service_test.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/event_invocation_synchronous_event_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc.framework.face import _test_case
-from grpc.framework.face.testing import event_invocation_synchronous_event_service_test_case as test_case
+from grpc_test.framework.face import _test_case
+from grpc_test.framework.face.testing import event_invocation_synchronous_event_service_test_case as test_case
 
 
 class EventInvocationSynchronousEventServiceTest(
diff --git a/src/python/src/grpc/framework/face/future_invocation_asynchronous_event_service_test.py b/src/python/grpcio_test/grpc_test/framework/face/future_invocation_asynchronous_event_service_test.py
similarity index 91%
rename from src/python/src/grpc/framework/face/future_invocation_asynchronous_event_service_test.py
rename to src/python/grpcio_test/grpc_test/framework/face/future_invocation_asynchronous_event_service_test.py
index 2d13bb911d668e5265ed852209eb060023367b47..99fdf18123dba268c37aa7ef86d35ebdeb9bb659 100644
--- a/src/python/src/grpc/framework/face/future_invocation_asynchronous_event_service_test.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/future_invocation_asynchronous_event_service_test.py
@@ -31,8 +31,8 @@
 
 import unittest
 
-from grpc.framework.face import _test_case
-from grpc.framework.face.testing import future_invocation_asynchronous_event_service_test_case as test_case
+from grpc_test.framework.face import _test_case
+from grpc_test.framework.face.testing import future_invocation_asynchronous_event_service_test_case as test_case
 
 
 class FutureInvocationAsynchronousEventServiceTest(
diff --git a/src/python/grpcio_test/grpc_test/framework/face/testing/__init__.py b/src/python/grpcio_test/grpc_test/framework/face/testing/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..708651910607ffb686d781713f6893567821b9fd
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/src/grpc/framework/face/testing/base_util.py b/src/python/grpcio_test/grpc_test/framework/face/testing/base_util.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/base_util.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/base_util.py
diff --git a/src/python/src/grpc/framework/face/testing/blocking_invocation_inline_service_test_case.py b/src/python/grpcio_test/grpc_test/framework/face/testing/blocking_invocation_inline_service_test_case.py
similarity index 97%
rename from src/python/src/grpc/framework/face/testing/blocking_invocation_inline_service_test_case.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/blocking_invocation_inline_service_test_case.py
index e57ee001045a487b0359e2401c2ffe83724ade2f..7e1158f96be152e3475f2db61debbecffddfff64 100644
--- a/src/python/src/grpc/framework/face/testing/blocking_invocation_inline_service_test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/blocking_invocation_inline_service_test_case.py
@@ -34,11 +34,11 @@ import abc
 import unittest  # pylint: disable=unused-import
 
 from grpc.framework.face import exceptions
-from grpc.framework.face.testing import control
-from grpc.framework.face.testing import coverage
-from grpc.framework.face.testing import digest
-from grpc.framework.face.testing import stock_service
-from grpc.framework.face.testing import test_case
+from grpc_test.framework.face.testing import control
+from grpc_test.framework.face.testing import coverage
+from grpc_test.framework.face.testing import digest
+from grpc_test.framework.face.testing import stock_service
+from grpc_test.framework.face.testing import test_case
 
 _TIMEOUT = 3
 _LONG_TIMEOUT = 45
diff --git a/src/python/src/grpc/framework/face/testing/callback.py b/src/python/grpcio_test/grpc_test/framework/face/testing/callback.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/callback.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/callback.py
diff --git a/src/python/src/grpc/framework/face/testing/control.py b/src/python/grpcio_test/grpc_test/framework/face/testing/control.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/control.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/control.py
diff --git a/src/python/src/grpc/framework/face/testing/coverage.py b/src/python/grpcio_test/grpc_test/framework/face/testing/coverage.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/coverage.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/coverage.py
diff --git a/src/python/src/grpc/framework/face/testing/digest.py b/src/python/grpcio_test/grpc_test/framework/face/testing/digest.py
similarity index 98%
rename from src/python/src/grpc/framework/face/testing/digest.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/digest.py
index db8fcbb0184efaca4d239a1436b788d49712e9d2..54ff21779aef6b93148187d29e785d439c296325 100644
--- a/src/python/src/grpc/framework/face/testing/digest.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/digest.py
@@ -38,11 +38,11 @@ from grpc.framework.common import cardinality
 from grpc.framework.common import style
 from grpc.framework.face import exceptions
 from grpc.framework.face import interfaces as face_interfaces
-from grpc.framework.face.testing import control as testing_control  # pylint: disable=unused-import
-from grpc.framework.face.testing import interfaces  # pylint: disable=unused-import
-from grpc.framework.face.testing import service as testing_service  # pylint: disable=unused-import
 from grpc.framework.foundation import stream
 from grpc.framework.foundation import stream_util
+from grpc_test.framework.face.testing import control as testing_control  # pylint: disable=unused-import
+from grpc_test.framework.face.testing import interfaces  # pylint: disable=unused-import
+from grpc_test.framework.face.testing import service as testing_service  # pylint: disable=unused-import
 
 _IDENTITY = lambda x: x
 
diff --git a/src/python/src/grpc/framework/face/testing/event_invocation_synchronous_event_service_test_case.py b/src/python/grpcio_test/grpc_test/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
similarity index 97%
rename from src/python/src/grpc/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
index 0f0b0e3d5232a7014fc8be7e6861a516750d7485..18eed53d6ee5567b2879ca8a007a6643445ae988 100644
--- a/src/python/src/grpc/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
@@ -33,12 +33,12 @@ import abc
 import unittest
 
 from grpc.framework.face import interfaces
-from grpc.framework.face.testing import callback as testing_callback
-from grpc.framework.face.testing import control
-from grpc.framework.face.testing import coverage
-from grpc.framework.face.testing import digest
-from grpc.framework.face.testing import stock_service
-from grpc.framework.face.testing import test_case
+from grpc_test.framework.face.testing import callback as testing_callback
+from grpc_test.framework.face.testing import control
+from grpc_test.framework.face.testing import coverage
+from grpc_test.framework.face.testing import digest
+from grpc_test.framework.face.testing import stock_service
+from grpc_test.framework.face.testing import test_case
 
 _TIMEOUT = 3
 
diff --git a/src/python/src/grpc/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py b/src/python/grpcio_test/grpc_test/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
similarity index 98%
rename from src/python/src/grpc/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
index 21bf9a42486a651ad81734e4e18dea82192ca977..3b42914342cbf61df2235e51e1b90f9209f6d03e 100644
--- a/src/python/src/grpc/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
@@ -35,13 +35,13 @@ import threading
 import unittest
 
 from grpc.framework.face import exceptions
-from grpc.framework.face.testing import control
-from grpc.framework.face.testing import coverage
-from grpc.framework.face.testing import digest
-from grpc.framework.face.testing import stock_service
-from grpc.framework.face.testing import test_case
 from grpc.framework.foundation import future
 from grpc.framework.foundation import logging_pool
+from grpc_test.framework.face.testing import control
+from grpc_test.framework.face.testing import coverage
+from grpc_test.framework.face.testing import digest
+from grpc_test.framework.face.testing import stock_service
+from grpc_test.framework.face.testing import test_case
 
 _TIMEOUT = 3
 _MAXIMUM_POOL_SIZE = 10
diff --git a/src/python/src/grpc/framework/face/testing/interfaces.py b/src/python/grpcio_test/grpc_test/framework/face/testing/interfaces.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/interfaces.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/interfaces.py
diff --git a/src/python/src/grpc/framework/face/testing/serial.py b/src/python/grpcio_test/grpc_test/framework/face/testing/serial.py
similarity index 100%
rename from src/python/src/grpc/framework/face/testing/serial.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/serial.py
diff --git a/src/python/src/grpc/framework/face/testing/service.py b/src/python/grpcio_test/grpc_test/framework/face/testing/service.py
similarity index 99%
rename from src/python/src/grpc/framework/face/testing/service.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/service.py
index bf54d41d6643f66222c884419e50b2ca9066d440..ee9d6a3da3ecbc5633bef6019e23c206403c6af5 100644
--- a/src/python/src/grpc/framework/face/testing/service.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/service.py
@@ -33,7 +33,7 @@ import abc
 
 # interfaces is referenced from specification in this module.
 from grpc.framework.face import interfaces as face_interfaces  # pylint: disable=unused-import
-from grpc.framework.face.testing import interfaces
+from grpc_test.framework.face.testing import interfaces
 
 
 class UnaryUnaryTestMethodImplementation(interfaces.Method):
diff --git a/src/python/src/grpc/framework/face/testing/stock_service.py b/src/python/grpcio_test/grpc_test/framework/face/testing/stock_service.py
similarity index 99%
rename from src/python/src/grpc/framework/face/testing/stock_service.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/stock_service.py
index 61aaf444a00fd42232053276f4da819b00ef297e..0f83ca4db13c4d8d1fab1b0f2e6c1a975f1a3399 100644
--- a/src/python/src/grpc/framework/face/testing/stock_service.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/stock_service.py
@@ -30,11 +30,11 @@
 """Examples of Python implementations of the stock.proto Stock service."""
 
 from grpc.framework.common import cardinality
-from grpc.framework.face.testing import service
 from grpc.framework.foundation import abandonment
 from grpc.framework.foundation import stream
 from grpc.framework.foundation import stream_util
-from grpc._junkdrawer import stock_pb2
+from grpc_test.framework.face.testing import service
+from grpc_test._junkdrawer import stock_pb2
 
 SYMBOL_FORMAT = 'test symbol:%03d'
 STREAM_LENGTH = 400
diff --git a/src/python/src/grpc/framework/face/testing/test_case.py b/src/python/grpcio_test/grpc_test/framework/face/testing/test_case.py
similarity index 97%
rename from src/python/src/grpc/framework/face/testing/test_case.py
rename to src/python/grpcio_test/grpc_test/framework/face/testing/test_case.py
index e60e3d1d405c2960f1423bf88132dc71376dad49..858d5cf7fdfae38112df9de3e7fe8f9420b503e2 100644
--- a/src/python/src/grpc/framework/face/testing/test_case.py
+++ b/src/python/grpcio_test/grpc_test/framework/face/testing/test_case.py
@@ -33,7 +33,7 @@ import abc
 
 # face_interfaces and interfaces are referenced in specification in this module.
 from grpc.framework.face import interfaces as face_interfaces  # pylint: disable=unused-import
-from grpc.framework.face.testing import interfaces  # pylint: disable=unused-import
+from grpc_test.framework.face.testing import interfaces  # pylint: disable=unused-import
 
 
 class FaceTestCase(object):
diff --git a/src/python/grpcio_test/grpc_test/framework/foundation/__init__.py b/src/python/grpcio_test/grpc_test/framework/foundation/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..708651910607ffb686d781713f6893567821b9fd
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/foundation/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/src/grpc/framework/foundation/_later_test.py b/src/python/grpcio_test/grpc_test/framework/foundation/_later_test.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/_later_test.py
rename to src/python/grpcio_test/grpc_test/framework/foundation/_later_test.py
diff --git a/src/python/src/grpc/framework/foundation/_logging_pool_test.py b/src/python/grpcio_test/grpc_test/framework/foundation/_logging_pool_test.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/_logging_pool_test.py
rename to src/python/grpcio_test/grpc_test/framework/foundation/_logging_pool_test.py
diff --git a/src/python/src/grpc/framework/foundation/stream_testing.py b/src/python/grpcio_test/grpc_test/framework/foundation/stream_testing.py
similarity index 100%
rename from src/python/src/grpc/framework/foundation/stream_testing.py
rename to src/python/grpcio_test/grpc_test/framework/foundation/stream_testing.py
diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/__init__.py b/src/python/grpcio_test/grpc_test/framework/interfaces/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..708651910607ffb686d781713f6893567821b9fd
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/interfaces/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/grpcio_test/grpc_test/framework/interfaces/links/__init__.py b/src/python/grpcio_test/grpc_test/framework/interfaces/links/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..708651910607ffb686d781713f6893567821b9fd
--- /dev/null
+++ b/src/python/grpcio_test/grpc_test/framework/interfaces/links/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
diff --git a/src/python/src/grpc/framework/interfaces/links/test_cases.py b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_cases.py
similarity index 99%
rename from src/python/src/grpc/framework/interfaces/links/test_cases.py
rename to src/python/grpcio_test/grpc_test/framework/interfaces/links/test_cases.py
index bf1f09d99de80a8804686cb5097829c8cb8c1b0d..26ca035c440e4d4ec582584db639eac85c8556df 100644
--- a/src/python/src/grpc/framework/interfaces/links/test_cases.py
+++ b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_cases.py
@@ -33,9 +33,9 @@
 import abc
 import unittest  # pylint: disable=unused-import
 
-from grpc.framework.common import test_constants
 from grpc.framework.interfaces.links import links
-from grpc.framework.interfaces.links import test_utilities
+from grpc_test.framework.common import test_constants
+from grpc_test.framework.interfaces.links import test_utilities
 
 
 def at_least_n_payloads_received_predicate(n):
diff --git a/src/python/src/grpc/framework/interfaces/links/test_utilities.py b/src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py
similarity index 100%
rename from src/python/src/grpc/framework/interfaces/links/test_utilities.py
rename to src/python/grpcio_test/grpc_test/framework/interfaces/links/test_utilities.py
diff --git a/src/python/interop/setup.py b/src/python/grpcio_test/setup.py
similarity index 93%
rename from src/python/interop/setup.py
rename to src/python/grpcio_test/setup.py
index 75012b0d8f4cd35830cf49b50636fa763be27aa3..3f57ef04e007ec7ea2377a1232bdb0e076de93e8 100644
--- a/src/python/interop/setup.py
+++ b/src/python/grpcio_test/setup.py
@@ -31,16 +31,14 @@
 
 import setuptools
 
-_PACKAGES = (
-    'interop',
-)
+_PACKAGES = setuptools.find_packages('.', exclude=['*._cython', '*._cython.*'])
 
 _PACKAGE_DIRECTORIES = {
-    'interop': 'interop',
+    '': '.',
 }
 
 _PACKAGE_DATA = {
-    'interop': [
+    'grpc_interop': [
         'credentials/ca.pem', 'credentials/server1.key',
         'credentials/server1.pem',]
 }
@@ -48,7 +46,7 @@ _PACKAGE_DATA = {
 _INSTALL_REQUIRES = ['oauth2client>=1.4.7', 'grpcio>=0.10.0a0']
 
 setuptools.setup(
-    name='interop',
+    name='grpcio_test',
     version='0.0.1',
     packages=_PACKAGES,
     package_dir=_PACKAGE_DIRECTORIES,
diff --git a/tools/distrib/python/docgen.py b/tools/distrib/python/docgen.py
index 3ab84a6ba1d8524acce17387d38677582016b93a..d76792c56f418733099ddee90273e70e7cf1a8a2 100755
--- a/tools/distrib/python/docgen.py
+++ b/tools/distrib/python/docgen.py
@@ -51,8 +51,8 @@ SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
 PROJECT_ROOT = os.path.abspath(os.path.join(SCRIPT_DIR, '..', '..', '..'))
 
 CONFIG = args.config
-SETUP_PATH = os.path.join(PROJECT_ROOT, 'src/python/src/setup.py')
-DOC_PATH = os.path.join(PROJECT_ROOT, 'src/python/src/doc/build')
+SETUP_PATH = os.path.join(PROJECT_ROOT, 'src/python/grpcio/setup.py')
+DOC_PATH = os.path.join(PROJECT_ROOT, 'src/python/grpcio/doc/build')
 INCLUDE_PATH = os.path.join(PROJECT_ROOT, 'include')
 LIBRARY_PATH = os.path.join(PROJECT_ROOT, 'libs/{}'.format(CONFIG))
 VIRTUALENV_DIR = os.path.join(SCRIPT_DIR, 'distrib_virtualenv')
diff --git a/tools/distrib/python/submit.py b/tools/distrib/python/submit.py
index a3615b3640412bab10492068a7a8da6770af297f..909ba563270ac5e0f70d566e65c9a06a20fbc28c 100755
--- a/tools/distrib/python/submit.py
+++ b/tools/distrib/python/submit.py
@@ -59,7 +59,7 @@ args = parser.parse_args()
 
 # Move to the root directory of Python GRPC.
 pkgdir = os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                      '../../../src/python/src')
+                      '../../../src/python/grpcio')
 # Remove previous distributions; they somehow confuse twine.
 try:
   shutil.rmtree(os.path.join(pkgdir, 'dist/'))
diff --git a/tools/run_tests/build_python.sh b/tools/run_tests/build_python.sh
index ae0fb42241dca617cab4d324bcada9832d1220de..265a542e3a6ab01e21927e792096f955c41d819f 100755
--- a/tools/run_tests/build_python.sh
+++ b/tools/run_tests/build_python.sh
@@ -43,8 +43,8 @@ make_virtualenv() {
     virtualenv -p `which "python"$1` $virtualenv_name
     source $virtualenv_name/bin/activate
     pip install -r src/python/requirements.txt
-    CFLAGS="-I$root/include -std=c89" LDFLAGS=-L$root/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install src/python/src
-    pip install src/python/interop
+    CFLAGS="-I$root/include -std=c89" LDFLAGS=-L$root/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install src/python/grpcio
+    pip install src/python/grpcio_test
   else
     source $virtualenv_name/bin/activate
     # Uninstall and re-install the packages we care about. Don't use
@@ -52,13 +52,13 @@ make_virtualenv() {
     # unnecessarily to dependencies. Don't use --no-deps to avoid missing
     # dependency upgrades.
     (yes | pip uninstall grpcio) || true
-    (yes | pip uninstall interop) || true
-    (CFLAGS="-I$root/include -std=c89" LDFLAGS=-L$root/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install src/python/src) || (
+    (yes | pip uninstall grpcio_test) || true
+    (CFLAGS="-I$root/include -std=c89" LDFLAGS=-L$root/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install src/python/grpcio) || (
       # Fall back to rebuilding the entire environment
       rm -rf $virtualenv_name
       make_virtualenv $1
     )
-    pip install src/python/interop
+    pip install src/python/grpcio_test
   fi
 }
 
diff --git a/tools/run_tests/python_tests.json b/tools/run_tests/python_tests.json
index 3d75d8de36c52da855102cc10ffd514f20526e04..426b93fe3a608e06c8881fca85c60044c1abd5e8 100755
--- a/tools/run_tests/python_tests.json
+++ b/tools/run_tests/python_tests.json
@@ -1,114 +1,114 @@
 [
   {
-    "module": "grpc._adapter._c_test",
+    "module": "grpc_test._adapter._c_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._low_test",
+    "module": "grpc_test._adapter._low_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._intermediary_low_test",
+    "module": "grpc_test._adapter._intermediary_low_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._links_test",
+    "module": "grpc_test._adapter._links_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._lonely_rear_link_test",
+    "module": "grpc_test._adapter._lonely_rear_link_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._blocking_invocation_inline_service_test",
+    "module": "grpc_test._adapter._blocking_invocation_inline_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._event_invocation_synchronous_event_service_test",
+    "module": "grpc_test._adapter._event_invocation_synchronous_event_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._adapter._future_invocation_asynchronous_event_service_test",
+    "module": "grpc_test._adapter._future_invocation_asynchronous_event_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._links._lonely_invocation_link_test",
+    "module": "grpc_test._links._lonely_invocation_link_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc._links._transmission_test",
+    "module": "grpc_test._links._transmission_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.early_adopter.implementations_test",
+    "module": "grpc_test.early_adopter.implementations_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.base.implementations_test",
+    "module": "grpc_test.framework.base.implementations_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.face.blocking_invocation_inline_service_test",
+    "module": "grpc_test.framework.face.blocking_invocation_inline_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.face.event_invocation_synchronous_event_service_test",
+    "module": "grpc_test.framework.face.event_invocation_synchronous_event_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.face.future_invocation_asynchronous_event_service_test",
+    "module": "grpc_test.framework.face.future_invocation_asynchronous_event_service_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.foundation._later_test",
+    "module": "grpc_test.framework.foundation._later_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "grpc.framework.foundation._logging_pool_test",
+    "module": "grpc_test.framework.foundation._logging_pool_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "interop._insecure_interop_test",
+    "module": "grpc_interop._insecure_interop_test",
     "pythonVersions": [
       "2.7"
     ]
   },
   {
-    "module": "interop._secure_interop_test",
+    "module": "grpc_interop._secure_interop_test",
     "pythonVersions": [
       "2.7"
     ]