Description
🚀 feature request
Description
I would like smooth editor support of the python_rules. Now when I open an editor (tried helix and vscode) neither recognizes any of the third party imports properly breaking autocomplete and type checking.
Describe the solution you'd like
Something like what the rules_go people have done but I imagine that pyright (the most commonly used python language server) does not have support for something similar to the gopackagedriver.. So I was thinking more along the lines of a shell script that manipulates PATH
and PYTHONPATH
to achieve something similar. still hacky but better than what I have now. It's also something that would work for other python language server's such as ruff-lsp.
Describe alternatives you've considered
Manually make a venv with the same dependencies and activate that before starting my editor. Works fine but it's hackish and it won't work for generated code. For example python files generated from protobuf by Bazel..
Activity
aignas commentedon Sep 21, 2023
Note, that
pyright
is a static type checker https://github.com/microsoft/pyright. Pylense is a closed-source LSP that is only available within VSCode.For now you could use https://github.com/cedarai/rules_pyvenv to create a virtual environment for a target, that provides good editor integration. That may work with generated code.
alexeagle commentedon Oct 2, 2023
https://github.com/aspect-build/rules_py has the explicit goal of providing excellent Python IDE support for
py_*
rules.github-actions commentedon Mar 30, 2024
This issue has been automatically marked as stale because it has not had any activity for 180 days. It will be closed if no further activity occurs in 30 days.
Collaborators can add an assignee to keep this open indefinitely. Thanks for your contributions to rules_python!
Use aspect_rules_py's py_binary
github-actions commentedon Sep 27, 2024
This issue has been automatically marked as stale because it has not had any activity for 180 days. It will be closed if no further activity occurs in 30 days.
Collaborators can add an assignee to keep this open indefinitely. Thanks for your contributions to rules_python!
tpasternak commentedon Sep 28, 2024
Recently, the IntelliJ/PyCharm plugin has received a lot of great patches, I think your could try it
antspy commentedon Oct 1, 2024
Hi,
Would it be possible to provide an example on how to enable the IDE support? I can't seem to find any specific explanation of how to integrate these rules with any IDE (e.g. vscode).
Thanks!
alexeagle commentedon Oct 1, 2024
@antspy
bazel run //my_target.venv
puts the virtualenv folder in your source tree, then you point your editor at it, for example https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environmentIn my testing, it was a lot easier to get this to work when the virtualenv is in the repo root, for some reason it was hard to get VSCode to discover one that's in a subfolder - but according to the docs it should work. LMK what you find.
antspy commentedon Oct 1, 2024
@alexeagle
Thank a lot for your answer - this worked!
For posterity:
I have created a py_binary in the root BUILD.bazel file, which contains all third-party dependencies. Then I run
bazel run mybinary.venv
, which creates a.venv
folder in the root directory.I point VSCode to this environment (it should recognize it automatically) and things seem to be working! :)
For the future:
pip_compile
rule, but I have not investigated this.Anyway, thank you for the help! :)
alexeagle commentedon Oct 2, 2024
I recorded a video walkthrough how this worked for me: https://www.youtube.com/watch?v=GTsy7IfmywQ&list=PLLU28e_DRwdu46fldnYzyFYvSJLjVFICd
antspy commentedon Oct 3, 2024
That's so cool, thanks a lot for doing this!! Very much appreciated :) :)