Commit 8a557da
authored
fix(py_venv): Partially resolve PYTHONHOME (#668)
Use the partially resolved interpreter path (eg. the first partially
resolved path for the interpreter binary which is under `.runfiles/`) as
the basis from which to identify the `pyvenv.cfg` file and thus as the
`sys.prefix`.
This fixes an issue which would allow the interpreter to observe an
un-resolved `sys.prefix` relative to which `_aspect.pth` source imports
would be invalid.
Fixes #666.
### Changes are visible to end-users: yes
- Searched for relevant documentation and updated as needed: yes
- Breaking change (forces users to change their own code or config): no
- Suggested release notes appear below: yes
Fixed a bug which would prevent 1stparty and other relative imports from
working as desired when venvs are consumed outside of Bazel.
### Test plan
- Manual testing; please provide instructions so we can reproduce:
Using `chicagotrading/shorty` at `venv-bug-repro`,
```
❯ git diff | cat
diff --git a/MODULE.bazel b/MODULE.bazel
index 5f63c5f..b8d3dea 100755
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -20,3 +20,8 @@ python = use_extension("@rules_python//python/extensions:python.bzl", "python")
python.toolchain(
python_version = "3.12",
)
+
+local_path_override(
+ module_name = "aspect_rules_py",
+ path = "/Users/arrdem/Documents/work/aspect/rules_py",
+)
❯ bazel run //app:app_bin.venv
INFO: Analyzed target //app:app_bin.venv (1 packages loaded, 876 targets configured).
INFO: Found 1 target...
Target //app:app_bin.venv up-to-date:
bazel-bin/app/app_bin.venv
INFO: Elapsed time: 1.056s, Critical Path: 0.02s
INFO: 1 process: 577 action cache hit, 1 internal.
INFO: Build completed successfully, 1 total action
INFO: Running command line: bazel-bin/app/app_bin.venv
final "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/bin/python"
[aspect] venv root "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv" venv.cfg "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/pyvenv.cfg"
[aspect] PyCfg { root: "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv", cfg: "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/pyvenv.cfg", version_info: "3.12.0", interpreter: Runfiles { rpath: "rules_python++python+python_3_12_aarch64-apple-darwin/bin/python3", repo: "_main" }, user_site: false }
[aspect] "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/bin/python3"
[aspect] Attempting to execute: "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/external/rules_python++python+python_3_12_aarch64-apple-darwin/bin/python3" with argv[0] as "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/bin/python3" and args as ["-B", "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/aspect_rules_py+/py/private/py_venv/link.py"]
Linking: /private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv -> /Users/arrdem/Documents/work/aspect/clients/chicago-trading/shorty/.app+app_bin.venv
Link is up to date!
To configure the virtualenv in your IDE, configure an interpreter with the homedir
/Users/arrdem/Documents/work/aspect/clients/chicago-trading/shorty/.app+app_bin.venv
Please note that you may encounter issues if your editor doesn't evaluate
the `activate` script. If you do please file an issue at
https://github.com/aspect-build/rules_py/issues/new?template=BUG-REPORT.yaml
To activate the virtualenv in your shell run
source /Users/arrdem/Documents/work/aspect/clients/chicago-trading/shorty/.app+app_bin.venv/bin/activate
virtualenvwrapper users may further want to
$ ln -s /Users/arrdem/Documents/work/aspect/clients/chicago-trading/shorty/.app+app_bin.venv $WORKON_HOME/.app+app_bin.venv
❯ source .app+app_bin.venv/bin/activate
❯ python3 -m app
final "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/bin/python3"
[aspect] venv root "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv" venv.cfg "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/pyvenv.cfg"
[aspect] PyCfg { root: "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv", cfg: "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/pyvenv.cfg", version_info: "3.12.0", interpreter: Runfiles { rpath: "rules_python++python+python_3_12_aarch64-apple-darwin/bin/python3", repo: "_main" }, user_site: false }
[aspect] "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/bin/python3"
[aspect] Attempting to execute: "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/external/rules_python++python+python_3_12_aarch64-apple-darwin/bin/python3" with argv[0] as "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/bin/python3" and args as ["-m", "app"]
hi from foo_lib
Hi from __main__
❯ python3 -P -m app
final "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/bin/python3"
[aspect] venv root "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv" venv.cfg "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/pyvenv.cfg"
[aspect] PyCfg { root: "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv", cfg: "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/pyvenv.cfg", version_info: "3.12.0", interpreter: Runfiles { rpath: "rules_python++python+python_3_12_aarch64-apple-darwin/bin/python3", repo: "_main" }, user_site: false }
[aspect] "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/bin/python3"
[aspect] Attempting to execute: "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/external/rules_python++python+python_3_12_aarch64-apple-darwin/bin/python3" with argv[0] as "/private/var/tmp/_bazel_arrdem/6292cdb66616265d0039b3e456edaa70/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/app/app_bin.venv.runfiles/_main/app/.app_bin.venv/bin/python3" and args as ["-P", "-m", "app"]
hi from foo_lib
Hi from __main__
```1 parent 1445956 commit 8a557da
2 files changed
+22
-18
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
93 | 93 | | |
94 | 94 | | |
95 | 95 | | |
| 96 | + | |
96 | 97 | | |
97 | 98 | | |
98 | 99 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | 15 | | |
26 | 16 | | |
27 | 17 | | |
| |||
216 | 206 | | |
217 | 207 | | |
218 | 208 | | |
219 | | - | |
220 | | - | |
221 | | - | |
222 | | - | |
223 | | - | |
224 | | - | |
225 | | - | |
226 | 209 | | |
227 | 210 | | |
228 | 211 | | |
| |||
305 | 288 | | |
306 | 289 | | |
307 | 290 | | |
308 | | - | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
309 | 309 | | |
310 | 310 | | |
311 | 311 | | |
| |||
347 | 347 | | |
348 | 348 | | |
349 | 349 | | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
350 | 353 | | |
351 | 354 | | |
352 | 355 | | |
| |||
0 commit comments