diff --git a/crates/uv-interpreter/src/python_environment.rs b/crates/uv-interpreter/src/python_environment.rs index 559ebce44..36c9545d5 100644 --- a/crates/uv-interpreter/src/python_environment.rs +++ b/crates/uv-interpreter/src/python_environment.rs @@ -107,7 +107,16 @@ impl PythonEnvironment { /// Lock the virtual environment to prevent concurrent writes. pub fn lock(&self) -> Result { - LockedFile::acquire(self.root.join(".lock"), self.root.normalized_display()) + if self.interpreter.is_virtualenv() { + // If the environment a virtualenv, use a virtualenv-specific lock file. + LockedFile::acquire(self.root.join(".lock"), self.root.normalized_display()) + } else { + // Otherwise, use a global lock file. + LockedFile::acquire( + env::temp_dir().join(format!("uv-{}.lock", cache_key::digest(&self.root))), + self.root.normalized_display(), + ) + } } }