bazel-contrib / bazel-contrib/rules_python

`py_binary` targets added to `py_wheel.deps` end up including the binary in the wheel. Sounds like WAI but it was surprising to me

Open
#2,923 9 comments 0 reactions 0 assignees View on GitHub
Good first issue packaging
Dominant language
Starlark
Stars
688
Forks
721
Avg merge
14h 49m
Merged PRs (30d)
81

Description

# 🐞 bug report

### Affected Rule

+ `py_wheel`

### Is this a regression?

Nope, not that I can tell at least.

### Description

Adding a `py_binary` target as a dep to `py_wheel` results in both the binary's `srcs` being added to the wheel _and the binary itself_. It's this latter part that is unexpected (at least to me, haha).

Maybe I'm missing an option that causes the bazel binaries to be excluded?

## 🔬 Minimal Reproduction

```starlark
py_binary(
name = "foo",
srcs = ["foo.py"],
)

py_wheel(
...,
distribution = "our_tables",
deps = [":foo"],
)
```

```shell
$ less bazel-bin/path/to/foo/foo-0.0.1-py3-none-any.whl | cat
Metadata-Version: 2.1
Name: our_tables
Version: 0.0.1

Archive: bazel-bin/path/to/foo/our_tables-0.0.1-py3-none-any.whl
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
24451 Defl:N 7964 67% 1980-01-01 00:00 2d00cf53 our_tables/foo
5124 Defl:N 1787 65% 1980-01-01 00:00 4846e197 our_tables/foo.py
91 Defl:N 86 6% 1980-01-01 00:00 4f1122ec our_tables-0.0.3.dist-info/WHEEL
9031 Defl:N 3390 63% 1980-01-01 00:00 e00f51c6 our_tables-0.0.3.dist-info/METADATA
698 Defl:N 445 36% 1980-01-01 00:00 8c16618f our_tables-0.0.3.dist-info/RECORD
-------- ------- --- -------
47408 16577 65% 5 files
```

It's that `our_tables/foo` that's strange to me. IMO it should not be included by default.

## 🔥 Exception or Error

N/A

## 🌍 Your Environment

**Operating System:**

gLinux

**Output of `bazel version`:**

```
$ bazel version
Bazelisk version: v1.20.0
Build label: 7.6.1
Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
Build time: Mon Mar 31 17:08:56 2025 (1743440936)
Build timestamp: 1743440936
Build timestamp as int: 1743440936
```

**Rules_python version:**

```
1.4.1
```

**Anything else relevant?**

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.