Sync from Piper @304070343

PROTOBUF_SYNC_PIPER
diff --git a/python/setup.py b/python/setup.py
index 327658a..9aabbf7 100755
--- a/python/setup.py
+++ b/python/setup.py
@@ -19,23 +19,17 @@
 from distutils.command.clean import clean as _clean
 from distutils.spawn import find_executable
 
-
-current_dir = (os.path.dirname(__file__) or os.curdir)
-current_dir_relative = os.path.relpath(current_dir)
-src_dir = os.path.abspath(os.path.join(current_dir, "..", "src"))
-vsprojects_dir = os.path.abspath(os.path.join(current_dir, "..", "vsprojects"))
-
 # Find the Protocol Compiler.
 if 'PROTOC' in os.environ and os.path.exists(os.environ['PROTOC']):
   protoc = os.environ['PROTOC']
-elif os.path.exists(os.path.join(src_dir, "protoc")):
-  protoc = os.path.join(src_dir, "protoc")
-elif os.path.exists(os.path.join(src_dir, "protoc.exe")):
-  protoc = os.path.join(src_dir, "protoc.exe")
-elif os.path.exists(os.path.join(vsprojects_dir, "Debug", "protoc.exe")):
-  protoc = os.path.join(vsprojects_dir, "Debug", "protoc.exe")
-elif os.path.exists(os.path.join(vsprojects_dir, "Release", "protoc.exe")):
-  protoc = os.path.join(vsprojects_dir, "Release", "protoc.exe")
+elif os.path.exists("../src/protoc"):
+  protoc = "../src/protoc"
+elif os.path.exists("../src/protoc.exe"):
+  protoc = "../src/protoc.exe"
+elif os.path.exists("../vsprojects/Debug/protoc.exe"):
+  protoc = "../vsprojects/Debug/protoc.exe"
+elif os.path.exists("../vsprojects/Release/protoc.exe"):
+  protoc = "../vsprojects/Release/protoc.exe"
 else:
   protoc = find_executable("protoc")
 
@@ -46,7 +40,7 @@
   Do not import google.protobuf.__init__ directly, because an installed
   protobuf library may be loaded instead."""
 
-  with open(os.path.join(current_dir, 'google', 'protobuf', '__init__.py')) as version_file:
+  with open(os.path.join('google', 'protobuf', '__init__.py')) as version_file:
     exec(version_file.read(), globals())
     global __version__
     return __version__
@@ -57,21 +51,15 @@
   .proto file.  Does nothing if the output already exists and is newer than
   the input."""
 
-  original_source = source
-  source = source.replace("../src", src_dir)
-
   if not require and not os.path.exists(source):
     return
 
-  output = os.path.join(
-    current_dir,
-    original_source.replace(".proto", "_pb2.py").replace("../src/", "")
-  )
+  output = source.replace(".proto", "_pb2.py").replace("../src/", "")
 
   if (not os.path.exists(output) or
       (os.path.exists(source) and
        os.path.getmtime(source) > os.path.getmtime(output))):
-    print("Generating %s..." % os.path.relpath(output))
+    print("Generating %s..." % output)
 
     if not os.path.exists(source):
       sys.stderr.write("Can't find required file: %s\n" % source)
@@ -83,13 +71,7 @@
           "or install the binary package.\n")
       sys.exit(-1)
 
-    protoc_command = [
-      protoc,
-      "-I{}".format(src_dir),
-      "-I{}".format(current_dir),
-      "--python_out={}".format(current_dir),
-      source,
-    ]
+    protoc_command = [ protoc, "-I../src", "-I.", "--python_out=.", source ]
     if subprocess.call(protoc_command) != 0:
       sys.exit(-1)
 
@@ -134,7 +116,7 @@
 class clean(_clean):
   def run(self):
     # Delete generated files in the code tree.
-    for (dirpath, dirnames, filenames) in os.walk(current_dir):
+    for (dirpath, dirnames, filenames) in os.walk("."):
       for filename in filenames:
         filepath = os.path.join(dirpath, filename)
         if filepath.endswith("_pb2.py") or filepath.endswith(".pyc") or \
@@ -287,14 +269,7 @@
         "Programming Language :: Python :: 3.7",
         ],
       namespace_packages=['google'],
-      # package_dir is required when setup.py is not run from the python/
-      # directory (such as from the ReadTheDocs build). See
-      # https://setuptools.readthedocs.io/en/latest/setuptools.html#using-find-packages
-      # package_dir must be a relative path. See:
-      # https://stackoverflow.com/a/53547931/101923
-      package_dir={"": current_dir_relative},
       packages=find_packages(
-          where=current_dir,
           exclude=[
               'import_test_package',
           ],