Turn `//python/private` into a package. (#555)

diff --git a/docs/BUILD b/docs/BUILD
index 1cc82d2..9fedb72 100644
--- a/docs/BUILD
+++ b/docs/BUILD
@@ -54,7 +54,7 @@
     name = "defs",
     srcs = [
         "//python:defs.bzl",
-        "//python:private/reexports.bzl",
+        "//python/private:reexports.bzl",
     ],
     deps = [":bazel_python_tools"],
 )
diff --git a/python/BUILD b/python/BUILD
index 88ee4dc..972bf9e 100644
--- a/python/BUILD
+++ b/python/BUILD
@@ -36,6 +36,7 @@
         "//python/constraints:distribution",
         "//python/legacy_pip_import:distribution",
         "//python/runfiles:distribution",
+        "//python/private:distribution",
     ],
     visibility = ["//:__pkg__"],
 )
@@ -48,8 +49,8 @@
         "defs.bzl",
         "packaging.bzl",
         "pip.bzl",
-        "private/reexports.bzl",
         "whl.bzl",
+        "//python/private:bzl",
     ],
     visibility = ["//:__pkg__"],
 )
@@ -61,14 +62,6 @@
     "python.bzl",  # Deprecated, please use defs.bzl
 ])
 
-# Needed to define bzl_library targets for docgen. (We don't define the
-# bzl_library target here because it'd give our users a transitive dependency
-# on Skylib.)
-exports_files(
-    ["private/reexports.bzl"],
-    visibility = ["//docs:__pkg__"],
-)
-
 # This target can be used to inspect the current Python major version. To use,
 # put it in the `flag_values` attribute of a `config_setting` and test it
 # against the values "PY2" or "PY3". It will always match one or the other.
diff --git a/python/defs.bzl b/python/defs.bzl
index 28073d4..39c26eb 100644
--- a/python/defs.bzl
+++ b/python/defs.bzl
@@ -21,7 +21,7 @@
 
 load("@bazel_tools//tools/python:srcs_version.bzl", _find_requirements = "find_requirements")
 load("@bazel_tools//tools/python:toolchain.bzl", _py_runtime_pair = "py_runtime_pair")
-load(":private/reexports.bzl", "internal_PyInfo", "internal_PyRuntimeInfo")
+load("//python/private:reexports.bzl", "internal_PyInfo", "internal_PyRuntimeInfo")
 
 # Exports of native-defined providers.
 
diff --git a/python/private/BUILD b/python/private/BUILD
new file mode 100644
index 0000000..90fcd3b
--- /dev/null
+++ b/python/private/BUILD
@@ -0,0 +1,41 @@
+# Copyright 2021 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+licenses(["notice"])  # Apache 2.0
+
+filegroup(
+    name = "distribution",
+    srcs = glob(["**"]),
+    visibility = ["//python:__pkg__"],
+)
+
+# Filegroup of bzl files that can be used by downstream rules for documentation generation
+# Using a filegroup rather than bzl_library to not give a transitive dependency on Skylib
+filegroup(
+    name = "bzl",
+    srcs = [
+        "reexports.bzl",
+    ],
+    visibility = ["//python:__pkg__"],
+)
+
+# Needed to define bzl_library targets for docgen. (We don't define the
+# bzl_library target here because it'd give our users a transitive dependency
+# on Skylib.)
+exports_files(
+    [
+        "reexports.bzl",
+    ],
+    visibility = ["//docs:__pkg__"],
+)