aspect-build / rules_py

More compatible Bazel rules for running Python tools and building Python projects
Apache License 2.0
86 stars 28 forks source link

[Bug]: `resolutions.from_requirements` installs all packages from requirements instead of using requirements to resolve virtual dependencies #362

Open dizzy57 opened 4 months ago

dizzy57 commented 4 months ago

What happened?

After adding PyQt6 to the dependencies I see the following when trying to create a venv for a target that does not depend on this package:

  ├─▶ Conflicting symlinks found when attempting to create venv. More than one package provides the file at these paths
  ├─▶ django_pyqt6/site-packages/PyQt6/__init__.py
  ╰─▶ site-packages/PyQt6/__init__.py

Version

Development (host) and target OS/architectures:

Output of bazel --version: 7.0.2

Version of the Aspect rules, or other relevant rules from your WORKSPACE or MODULE.bazel file: HEAD (v0.7.3+)

Language(s) and/or frameworks involved:

How to reproduce

Check out https://github.com/dizzy57/rules_py/tree/venv-namespace
Run `bazel run //py/tests/virtual/django:manage`.

Any other information?

Please note that //py/tests/virtual/django:manage does not depend on PyQt6 neither directly nor transitively, but merely adding this dependency to requirements.txt makes bazel run to fail. I expect rules_py to mirror rules_python behavior here and only install bare minimum of dependencies in the virtualenv.