10175143d1
## Summary This PR adds a `--python` flag that allows users to provide a specific Python interpreter into which `uv` should install packages. This would replace the `VIRTUAL_ENV=` workaround that folks have been using to install into arbitrary, system environments, while _also_ actually being correct for installing into non-virtual environments, where the bin and site-packages paths can differ. The approach taken here is to use `sysconfig.get_paths()` to get the correct paths from the interpreter, and then use those for determining the `bin` and `site-packages` directories, rather than constructing them based on hard-coded expectations for each platform. Closes https://github.com/astral-sh/uv/issues/1396. Closes https://github.com/astral-sh/uv/issues/1779. Closes https://github.com/astral-sh/uv/issues/1988. ## Test Plan - Verified that, on my Windows machine, I was able to install `requests` into a global environment with: `cargo run pip install requests --python 'C:\\Users\\crmarsh\\AppData\\Local\\Programs\\Python\\Python3.12\\python.exe`, then `python` and `import requests`. - Verified that, on macOS, I was able to install `requests` into a global environment installed via Homebrew with: `cargo run pip install requests --python $(which python3.8)`.
56 lines
1.6 KiB
TOML
56 lines
1.6 KiB
TOML
[package]
|
|
name = "install-wheel-rs"
|
|
version = "0.0.1"
|
|
publish = false
|
|
description = "Takes a wheel and installs it, either in a venv or for monotrail"
|
|
keywords = ["wheel", "python"]
|
|
|
|
edition = { workspace = true }
|
|
rust-version = { workspace = true }
|
|
homepage = { workspace = true }
|
|
documentation = { workspace = true }
|
|
repository = { workspace = true }
|
|
authors = { workspace = true }
|
|
license = { workspace = true }
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[lib]
|
|
name = "install_wheel_rs"
|
|
|
|
[dependencies]
|
|
distribution-filename = { path = "../distribution-filename" }
|
|
pep440_rs = { path = "../pep440-rs" }
|
|
platform-host = { path = "../platform-host" }
|
|
uv-normalize = { path = "../uv-normalize" }
|
|
uv-fs = { path = "../uv-fs" }
|
|
pypi-types = { path = "../pypi-types" }
|
|
|
|
clap = { workspace = true, optional = true, features = ["derive"] }
|
|
configparser = { workspace = true }
|
|
csv = { workspace = true }
|
|
data-encoding = { workspace = true }
|
|
fs-err = { workspace = true }
|
|
mailparse = { workspace = true }
|
|
once_cell = { workspace = true }
|
|
pathdiff = { workspace = true }
|
|
platform-info = { workspace = true }
|
|
plist = { workspace = true }
|
|
reflink-copy = { workspace = true }
|
|
regex = { workspace = true }
|
|
rustc-hash = { workspace = true }
|
|
serde = { workspace = true, features = ["derive"] }
|
|
serde_json = { workspace = true }
|
|
sha2 = { workspace = true }
|
|
tempfile = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
tracing = { workspace = true }
|
|
tracing-subscriber = { workspace = true, optional = true }
|
|
url = { workspace = true }
|
|
walkdir = { workspace = true }
|
|
zip = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
indoc = { version = "2.0.4" }
|