diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index f40dc6e..1011898 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -105,7 +105,6 @@
 import com.google.devtools.build.lib.rules.platform.PlatformRules;
 import com.google.devtools.build.lib.rules.proto.BazelProtoCommon;
 import com.google.devtools.build.lib.rules.proto.ProtoConfiguration;
-import com.google.devtools.build.lib.rules.python.PyRuleClasses.Py3Symlink;
 import com.google.devtools.build.lib.rules.python.PyRuntimeRule;
 import com.google.devtools.build.lib.rules.python.PythonConfiguration;
 import com.google.devtools.build.lib.rules.repository.CoreWorkspaceRules;
@@ -445,7 +444,6 @@
                   Starlark.NONE, PyBootstrap.allowedRepositories));
           builder.addStarlarkBuiltinsInternal(BazelPyBuiltins.NAME, new BazelPyBuiltins());
           builder.addStarlarkBootstrap(new PyBootstrap());
-          builder.addSymlinkDefinition(Py3Symlink.INSTANCE);
 
           try {
             builder.addWorkspaceFileSuffix(
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequestOptions.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequestOptions.java
index 94fe4e9..f4c4993 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequestOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequestOptions.java
@@ -324,21 +324,6 @@
   }
 
   @Option(
-      name = "experimental_create_py_symlinks",
-      defaultValue = "false",
-      documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
-      effectTags = {OptionEffectTag.AFFECTS_OUTPUTS},
-      help =
-          "If enabled, two convenience symlinks, `py2` and `py3`, will be created (with the"
-              + " appropriate prefix). These point to the output directories for the Python 2 and"
-              + " Python 3 configurations, respectively. This can be used to access outputs in the"
-              + " bin directory of a specific Python version. For instance, if --symlink_prefix is"
-              + " `foo-`, the path `foo-py2/bin` behaves like `foo-bin` except that it is"
-              + " guaranteed to contain artifacts built in the Python 2 configuration. IMPORTANT:"
-              + " This flag is not planned to be enabled by default, and should not be relied on.")
-  public boolean experimentalCreatePySymlinks;
-
-  @Option(
       name = "use_action_cache",
       defaultValue = "true",
       documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/BUILD b/src/main/java/com/google/devtools/build/lib/rules/python/BUILD
index 9b034314..1e580dd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/BUILD
@@ -18,13 +18,11 @@
     ),
     deps = [
         "//src/main/java/com/google/devtools/build/docgen/annot",
-        "//src/main/java/com/google/devtools/build/lib:build-request-options",
         "//src/main/java/com/google/devtools/build/lib/actions",
         "//src/main/java/com/google/devtools/build/lib/actions:artifacts",
         "//src/main/java/com/google/devtools/build/lib/analysis:actions/abstract_file_write_action",
         "//src/main/java/com/google/devtools/build/lib/analysis:actions/deterministic_writer",
         "//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
-        "//src/main/java/com/google/devtools/build/lib/analysis:config/build_configuration",
         "//src/main/java/com/google/devtools/build/lib/analysis:config/build_options",
         "//src/main/java/com/google/devtools/build/lib/analysis:config/core_option_converters",
         "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment",
@@ -42,13 +40,11 @@
         "//src/main/java/com/google/devtools/build/lib/packages/semantics",
         "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//src/main/java/com/google/devtools/build/lib/skyframe/serialization:visible-for-serialization",
-        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
         "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec:serialization-constant",
         "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python",
         "//src/main/java/com/google/devtools/build/lib/util",
         "//src/main/java/com/google/devtools/build/lib/util:filetype",
         "//src/main/java/com/google/devtools/build/lib/util:os",
-        "//src/main/java/com/google/devtools/build/lib/vfs",
         "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
         "//src/main/java/com/google/devtools/common/options",
         "//src/main/java/net/starlark/java/annot",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java
index 376482e..ebf7182 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java
@@ -13,20 +13,8 @@
 // limitations under the License.
 package com.google.devtools.build.lib.rules.python;
 
-import static com.google.common.collect.ImmutableSet.toImmutableSet;
-
-import com.google.common.base.Ascii;
-import com.google.common.collect.ImmutableSet;
-import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
-import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.SymlinkDefinition;
-import com.google.devtools.build.lib.buildtool.BuildRequestOptions;
-import com.google.devtools.build.lib.cmdline.RepositoryName;
 import com.google.devtools.build.lib.packages.Attribute.AllowedValueSet;
 import com.google.devtools.build.lib.util.FileType;
-import com.google.devtools.build.lib.vfs.Path;
-import java.util.Set;
-import java.util.function.Function;
 
 /** Rule definitions for Python rules. */
 public class PyRuleClasses {
@@ -44,45 +32,4 @@
           return String.format("has to be one of 'PY2' or 'PY3' instead of '%s'", value);
         }
       };
-
-  /** The py3 symlinks. */
-  public static final class Py3Symlink implements SymlinkDefinition {
-    public static final Py3Symlink INSTANCE = new Py3Symlink();
-
-    @Override
-    public String getLinkName(String symlinkPrefix, String workspaceBaseName) {
-      return symlinkPrefix + Ascii.toLowerCase(PythonVersion.PY3.toString());
-    }
-
-    @Override
-    public ImmutableSet<Path> getLinkPaths(
-        BuildRequestOptions buildRequestOptions,
-        Set<BuildConfigurationValue> targetConfigs,
-        Function<BuildOptions, BuildConfigurationValue> configGetter,
-        RepositoryName repositoryName,
-        Path outputPath,
-        Path execRoot) {
-      if (!buildRequestOptions.experimentalCreatePySymlinks) {
-        return ImmutableSet.of();
-      }
-
-      return targetConfigs.stream()
-          .map(
-              config -> {
-                BuildOptions options = config.getOptions();
-                PythonOptions opts =
-                    options.hasNoConfig() ? null : options.get(PythonOptions.class);
-                if (opts == null || !opts.canTransitionPythonVersion(PythonVersion.PY3)) {
-                  return config;
-                } else {
-                  BuildOptions newOptions = options.clone();
-                  newOptions.get(PythonOptions.class).setPythonVersion(PythonVersion.PY3);
-                  return configGetter.apply(newOptions);
-                }
-              })
-          .map(config -> config.getOutputDirectory(repositoryName).getRoot().asPath())
-          .distinct()
-          .collect(toImmutableSet());
-    }
-  }
 }
