Skip to content

Commit

Permalink
Treat non-existent site-packages as empty
Browse files Browse the repository at this point in the history
  • Loading branch information
charliermarsh committed Mar 13, 2024
1 parent 7964bfb commit 64db05a
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 7 deletions.
3 changes: 1 addition & 2 deletions crates/uv-dispatch/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,7 @@ impl<'a> BuildContext for BuildDispatch<'a> {
let tags = self.interpreter.tags()?;

// Determine the set of installed packages.
let site_packages =
SitePackages::from_executable(venv).context("Failed to list installed packages")?;
let site_packages = SitePackages::from_executable(venv)?;

let Plan {
local,
Expand Down
16 changes: 15 additions & 1 deletion crates/uv-installer/src/site_packages.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,22 @@ impl<'a> SitePackages<'a> {
let mut by_name = FxHashMap::default();
let mut by_url = FxHashMap::default();

// Read the site-packages directory.
let site_packages = match fs::read_dir(venv.site_packages()) {
Ok(site_packages) => site_packages,
Err(err) if err.kind() == std::io::ErrorKind::NotFound => {
return Ok(Self {
venv,
distributions,
by_name,
by_url,
});
}
Err(err) => return Err(err).context("Failed to read site-packages directory"),
};

// Index all installed packages by name.
for entry in fs::read_dir(venv.site_packages())? {
for entry in site_packages {
let entry = entry?;
if entry.file_type()?.is_dir() {
let path = entry.path();
Expand Down
3 changes: 1 addition & 2 deletions crates/uv/src/commands/pip_install.rs
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,7 @@ pub(crate) async fn pip_install(
let _lock = venv.lock()?;

// Determine the set of installed packages.
let site_packages =
SitePackages::from_executable(&venv).context("Failed to list installed packages")?;
let site_packages = SitePackages::from_executable(&venv)?;

// If the requirements are already satisfied, we're done. Ideally, the resolver would be fast
// enough to let us remove this check. But right now, for large environments, it's an order of
Expand Down
3 changes: 1 addition & 2 deletions crates/uv/src/commands/pip_sync.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,7 @@ pub(crate) async fn pip_sync(
);

// Determine the set of installed packages.
let site_packages =
SitePackages::from_executable(&venv).context("Failed to list installed packages")?;
let site_packages = SitePackages::from_executable(&venv)?;

// Resolve any editables.
let resolved_editables = resolve_editables(
Expand Down

0 comments on commit 64db05a

Please sign in to comment.