Skip to content

Commit

Permalink
Set base executable when returning virtual environment (#11209)
Browse files Browse the repository at this point in the history
## Summary

I'm not sure that this has much of an effect in practice, but currently,
when we return a virtual environment, the `sys_base_executable ` of the
parent ends up being retained as `sys_base_executable` of the created
environment. But these can be, like, subtly different? If you have a
symlink to a Python, then for the symlink, `sys_base_executable` will be
equal to `sys_executable`. But when you create a virtual environment for
that interpreter, we'll set `home` to the resolved symlink, and so
`sys_base_executable` will be the resolved symlink too, in general.
Anyway, this means that we should now have a consistent value between
(1) returning `Virtualenv` from the creation routine and (2) querying
the created interpreter.
  • Loading branch information
charliermarsh authored Feb 4, 2025
1 parent 34552e2 commit 2fad82c
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 0 deletions.
1 change: 1 addition & 0 deletions crates/uv-python/src/interpreter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ impl Interpreter {
pub fn with_virtualenv(self, virtualenv: VirtualEnvironment) -> Self {
Self {
scheme: virtualenv.scheme,
sys_base_executable: Some(virtualenv.base_executable),
sys_executable: virtualenv.executable,
sys_prefix: virtualenv.root,
target: None,
Expand Down
3 changes: 3 additions & 0 deletions crates/uv-python/src/virtualenv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ pub struct VirtualEnvironment {
/// (Unix, Python 3.11).
pub executable: PathBuf,

/// The path to the base executable for the environment, within the `home` directory.
pub base_executable: PathBuf,

/// The [`Scheme`] paths for the virtualenv, as returned by (e.g.) `sysconfig.get_paths()`.
pub scheme: Scheme,
}
Expand Down
1 change: 1 addition & 0 deletions crates/uv-virtualenv/src/virtualenv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,7 @@ pub(crate) fn create(
},
root: location,
executable,
base_executable: base_python,
})
}

Expand Down

0 comments on commit 2fad82c

Please sign in to comment.