{"record":{"id":"4bb3c84c31321eb2","repo":"windmill-labs/windmill","slug":"error-while-installing-dependencies-e-4bb3c8","errorCode":null,"errorMessage":"\n error while installing dependencies: {e:?}\n{}","messagePattern":"\n error while installing dependencies: (.+?)\n(.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"backend/windmill-worker/src/universal_pkg_installer.rs","lineNumber":871,"sourceCode":"        None,\n        false,\n        &mut None,\n        None,\n        None,\n    )\n    .await\n    {\n        windmill_queue::append_logs(\n            &job_id,\n            &w_id,\n            format!(\n                \"\\n[x] - error while installing {}: {e:?}\",\n                &dep.display_name\n            ),\n            &conn,\n        )\n        .await;\n        bail!(format!(\n            \"\\n error while installing dependencies: {e:?}\\n{}\",\n            &dep.display_name\n        ));\n    } else {\n        if let Some(ref cb) = post_install {\n            cb(&dep)?;\n        }\n        mark_success(dep.path.clone(), &job_id, &w_id).await;\n        print_success(\n            false,\n            true,\n            &job_id,\n            &w_id,\n            &dep.display_name,\n            name_ml,\n            counter_arc,\n            total_to_install,\n            start,","sourceCodeStart":853,"sourceCodeEnd":889,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/backend/windmill-worker/src/universal_pkg_installer.rs#L853-L889","documentation":"In the per-dependency detached install thread (`try_install_one_detached`), if installing one dependency fails, Windmill logs `[x] error while installing <name>` and records the failure against that dependency, then bails with this message carrying the debug error and the dependency's display name, identifying which single dependency failed.","triggerScenarios":"A single dependency's install in the threaded path fails — bad coordinate, registry unreachable for that package, transient network blip mid-download, or the package no longer existing on the index.","commonSituations":"One broken pin among many deps in a large requirements list; a package temporarily removed from the index; transient network failure on one download; a rate-limited package registry.","solutions":["Identify the failing dependency from the display name in the message and the `[x] error while installing <name>` log line, then fix or remove that specific dependency entry","Retry the job — installs are per-dependency and transient failures often succeed on retry","Pin a version that actually exists on the configured index for the failing package","If it is a private package, verify worker credentials and index URL"],"exampleFix":"# before\nsome-package==1.2.3\n# after (version that exists on the index)\nsome-package==1.2.4","handlingStrategy":"retry","validationCode":"// pre-validate each requirement resolves before submitting the job\n// for pkg in $(cat requirements.txt); do pip download --no-deps -q \"$pkg\" -d /tmp || echo \"bad: $pkg\"; done","typeGuard":null,"tryCatchPattern":"// catch and surface which dep failed\nmatch res {\n    Err(e) if e.to_string().contains(\"error while installing dependencies\") => {\n        let dep = e.to_string().lines().last().unwrap_or(\"\");\n        report_failed_dependency(dep);\n    }\n    other => other?,\n}","preventionTips":["Resolve the full lockfile locally before deploying to catch bad pins early","Keep dependency lists minimal and pinned","Ensure worker network access/credentials to the package index","Pre-bake flaky dependencies into the worker image"],"tags":["dependencies","package-install","concurrency","worker"],"backgroundTag":"dependency-installation-failed","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}