Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
dizzy57 opened this issue Jul 4, 2024 · 3 comments
Assignees
Labels
bug Something isn't working

Comments

@dizzy57
Copy link

dizzy57 commented Jul 4, 2024

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.

@dizzy57 dizzy57 added the bug Something isn't working label Jul 4, 2024
@thesayyn thesayyn self-assigned this Jul 4, 2024
@mattem mattem assigned mattem and unassigned thesayyn Aug 8, 2024
@1e100
Copy link

1e100 commented Dec 9, 2024

OpenCV seems to be afflicted with this too. Or maybe with some variant of this:

Error:   × Unable to run command:
  ╰─▶ Conflicting symlinks found when attempting to create venv. More than one
      package provides the file at these paths
   ╭─[1:209]
 1 │ /home/foo/.cache/bazel/_bazel_foo/05195ea62fe8ff6bdb6fcbfa6efd3485/sandbox/processwrapper-sandbox/11/execroot/_main/bazel-out/k8-fastbuild/bin/datasets/coco_test.runfiles/.coco_test.venv/lib/python3.12/site-packages/cv2/version.py
   ·                                                                                                                                                                                                                 ──────────────┬─────────────
   ·                                                                                                                                                                                                                               ╰── Existing file in virtual environment
 2 │ /home/foo/.cache/bazel/_bazel_foo/05195ea62fe8ff6bdb6fcbfa6efd3485/sandbox/processwrapper-sandbox/11/execroot/_main/bazel-out/k8-fastbuild/bin/datasets/coco_test.runfiles/rules_python~~pip~pypi_312_opencv_python_linux_aarch64_linux_arm_linux_ppc_linux_s390x_linux_x86_64/site-packages/cv2/version.py
   ·                                                                                                                                                                                                                                                                                      ──────────────┬─────────────
   ·                                                                                                                                                                                                                                                                                                    ╰── Next file to link
   ╰────
  help: Set `package_collisions = "warning"` on the binary or test rule to
        downgrade this error to a warning

@dizzy57
Copy link
Author

dizzy57 commented Dec 9, 2024

@1e100 this issue is about virtual dependencies, I think you're hitting #358

@1e100
Copy link

1e100 commented Dec 10, 2024

Looks like it, yeah. It's annoying more than anything, once I disable the error things seem to work. The annoyance is that I have to disable it on every py_binary and py_test target that includes opencv.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants