Skip to content

[Bug]: py_pex_binary fails with AmbiguousDistributionError #408

Open
@harshalparekh6

Description

@harshalparekh6

What happened?

Building py_pex_binary fails with:

Traceback (most recent call last):
  File "/home/playground/.cache/bazel/_bazel_playground/33746cb7bfc65ca42552dbe5cbc93007/execroot/ntropy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/aspect_rules_py/py/tools/pex/pex.runfiles/aspect_rules_py/py/tools/pex/main.py", line 162, in <module>
    dist = Distribution.load(dep + "/../")
  File "/home/playground/.cache/bazel/_bazel_playground/33746cb7bfc65ca42552dbe5cbc93007/execroot/ntropy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/aspect_rules_py/py/tools/pex/pex.runfiles/.pex.venv/lib/python3.9/site-packages/pex/dist_metadata.py", line 885, in load
    return cls(location=location, metadata=DistMetadata.load(location))
  File "/home/playground/.cache/bazel/_bazel_playground/33746cb7bfc65ca42552dbe5cbc93007/execroot/ntropy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/aspect_rules_py/py/tools/pex/pex.runfiles/.pex.venv/lib/python3.9/site-packages/pex/dist_metadata.py", line 805, in load
    metadata_files = load_metadata(location, restrict_types_to=restrict_types_to)
  File "/home/playground/.cache/bazel/_bazel_playground/33746cb7bfc65ca42552dbe5cbc93007/execroot/ntropy/bazel-out/k8-opt-exec-2B5CBBC6/bin/external/aspect_rules_py/py/tools/pex/pex.runfiles/.pex.venv/lib/python3.9/site-packages/pex/dist_metadata.py", line 363, in load_metadata
    raise AmbiguousDistributionError(
pex.dist_metadata.AmbiguousDistributionError: Found more than one distribution inside external/python3_9_x86_64-unknown-linux-gnu/lib/python3.9/site-packages/_distutils_hack/../:
pip-23.2.1.dist-info/METADATA
setuptools-68.2.2.dist-info/METADATA

Version

Development (host) and target OS/architectures:

Output of bazel --version:
bazel 6.5.0

Version of the Aspect rules, or other relevant rules from your
WORKSPACE or MODULE.bazel file:
rules_py-0.8.2

Language(s) and/or frameworks involved:
python3.9

How to reproduce

py_binary(
    name = "binary",
    srcs = [
        "__init__.py",
    ],
    main = "__init__.py",
    visibility = ["//visibility:public"],
)

py_pex_binary(
    name = "py_pex_binary",
    binary = ":binary",
)


### Any other information?

_No response_

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingprioritizedValuable work that we hope to complete soon

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions