Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Deprecate and remove implicit py_binary zipapp support

Aperta
#3,567 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
python
Ambito
build-system

Direzione di ricerca

Cerca nel repository build_python_zip e python_zip_file, quindi esamina i file BUILD referenziati, le implementazioni di my_rule.bzl e le transizioni di rule.bzl. Confronta ogni utilizzo con i casi di migrazione descritti in questa issue e identifica i target Bazel interessati. Il lavoro è completato quando i percorsi zipapp impliciti legacy sono stati rimossi o migrati a py_zipapp_binary o py_zipapp_test senza interrompere le build pertinenti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

The implicit zipapp support of py_binary and py_test is being deprecated and removed. It is replaced by the py_zipapp_binary and py_zipapp_test rules. There are several ways the implicit zipapp logic may be activated.

For reference, these are the two loads you're most likely to need:

load("@rules_python//python/zipapp:py_zipapp_binary.bzl", "py_zipapp_binary")
load("@rules_python//python/zipapp:py_zipapp_test.bzl", "py_zipapp_test")

The flag name you want to look for is build_python_zip.

Windows-specific note: Windows enables zipapp by default, so the absence of the flag is the same as --build_python_zip=true !

Migration guide

This guide tries to give information on how to handle all possible cases of what may need to be migrated. Most changes are small, should be transparent, and can be done incrementally.

In practice, the most likely scenario you'll need to fix is using the
--build_python_zip flag on the command line -- see the "Migrate explicit --build_python_zip" section for that case.

Disable legacy zipapp flag

Add common --build_python_zip=false --@rules_python//python/config_settings:build_python_zip=false to your .bazelrc

Windows-specific note: Windows enables zipapp by default

Migrate explicit --build_python_zip usage

TLDR: Replace --build_python_zip on the command line with a py_zipapp_binary target in a BUILD file.

Replace this:

# File: BUILD

py_binary(name="bin")

# Command line
bazel build //:bin --build_python_zip

With this:

# File: BUILD
load("@rules_python//python/zipapp:py_zipapp_binary", "py_zipapp_binary")

py_binary(name="bin")
py_zipapp_binary(name = "bin_zipapp", binary=":bin")

# Command line
bazel build //:bin_zipapp

Migrate py_binary using config_settings with py_zipapp rule

TLDR: Add py_zipapp_binary for each py_binary you want as a zipapp

Replace this:

py_binary(
  name = "bin"
  config_settings = {
    "@rules_python//python/config:build_python_zip": "true",
    "//command_line_option:build_python_zip": "true",
  },
  ...
)

With this:

load("@rules_python//python/zipapp:py_zipapp_binary", "py_zipapp_binary")

py_binary(
  name = "bin"
  ...
)

py_zipapp_binary(
  name = "bin.zipapp",
  binary = ":bin",
)

Migrate filegroup using python_zip_file output group

Replace this:

TLDR: Add py_zipapp_binary and point the filegroup to it.

py_binary(name = "bin", ...)

filegroup(
  name = "bin_zip_file",
  output_group = "python_zip_file",
  srcs = [":bin"],
)

With this:

load("@rules_python//python/zipapp:py_zipapp_binary", "py_zipapp_binary")

py_binary(name = "bin", ...)
py_zipapp_binary(name = "bin_zipapp", binary=":bin")
filegroup(
  name = "bin_zip_file",
  output_group = "python_zip_file",
  srcs = [":bin_zipapp"],
)

Migrate Starlark using python_zip_file output group

TLDR: Add py_zipapp target and use it as the input target instead.

Replace this:

# File: my_rule.bzl
def _my_rule_impl(ctx):
  zip_file = ctx.attr.binary[OutputGroupInfo]["python_zip_file"].to_list()[0]

# File: BUILD.bazel
py_binary(name="bin", ...)
my_rule(name = "mytarget", binary=":bin", ...)

With this:

# File: my_rule.bzl

def _my_rule_impl(ctx):
  zip_file = ctx.attr.binary[OutputGroupInfo]["python_zip_file"].to_list()[0]

# File: BUILD.bazel
load("@rules_python//python/zipapp:py_zipapp_binary", "py_zipapp_binary")
py_binary(name="bin", ...)
py_zipapp_binary(name = "bin_zipapp", binary=":bin")
my_rule(name = "mytarget", binary=":bin_zipapp", ...)

Migration transitions setting build_python_zip flags

TLDR: Remove the build_python_zip flags from the transition and refactor into a separate target.

Replace this:

# File: rule.bzl
my_transition = transition(
   outputs = [
      "//command_line_settings:build_python_zip",
      "@rules_python//python/config_settings:build_python_zip",
   ],
   ...
)
my_rule(cfg = my_transition, ...)

# File: BUILD
py_binary(name="bin", ...)
my_rule(target=":bin")

With this:

# File: rule.bzl
my_transition = transition(
   outputs = [],
   ...
)
my_rule(cfg = my_transition, ...)

# File: BUILD
load("@rules_python//python/zipapp:py_zipapp_binary", "py_zipapp_binary")
py_binary(name="bin", ...)
py_zipapp_binary(name="bin_zipapp", binary=":bin")
my_rule(target=":bin_zipapp")
Lingua principale
Starlark
Stelle
690
Fork
722
Merge medio
1g 55m
PR unite (30g)
38

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di bazel-contrib/rules_python

Tutte le issue di bazel-contrib/rules_python

Issue simili

Altre issue su Build System

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.