{"record":{"id":"9d0d650905c148f5","repo":"windmill-labs/windmill","slug":"error-while-installing-dependencies-e","errorCode":null,"errorMessage":"\nerror while installing dependencies: {e:?}\n{}","messagePattern":"\nerror while installing dependencies: (.+?)\n(.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"backend/windmill-worker/src/universal_pkg_installer.rs","lineNumber":324,"sourceCode":"            conn,\n            // TODO: Return mem_peak\n            &mut 0,\n            // TODO: Return canceld_by_ref\n            &mut None,\n            child,\n            is_sandboxing_enabled(),\n            &worker_name,\n            &w_id,\n            &installer_executable_name,\n            None,\n            false,\n            &mut None,\n            pipe_stdout,\n            None,\n        )\n        .await\n        {\n            bail!(format!(\n                \"\\nerror while installing dependencies: {e:?}\\n{}\",\n                buf\n            ));\n        }\n        {\n            postinstall_cb(for_all_at_once_copy.clone()).await?;\n        }\n        for RequiredDependency { path, _s3_handle, .. } in for_all_at_once_copy.into_iter() {\n            mark_success(path.clone(), job_id, w_id).await;\n            #[cfg(all(feature = \"enterprise\", feature = \"parquet\"))]\n            {\n                if let Some(os) = windmill_object_store::get_object_store().await {\n                    let language_name = _language_name.to_owned();\n                    tokio::spawn(async move {\n                        if let Err(e) = crate::global_cache::build_tar_and_push(\n                            os,\n                            path,\n                            language_name,","sourceCodeStart":306,"sourceCodeEnd":342,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/backend/windmill-worker/src/universal_pkg_installer.rs#L306-L342","documentation":"When installing a script's language dependencies in batch (`par_install_language_dependencies_all_at_once`), Windmill captures the installer's combined output into a buffer. If the install subprocess errors, the job fails with this message containing the debug-formatted error followed by that buffered output, showing what the package manager actually printed.","triggerScenarios":"A batch dependency install for any language fails — resolver conflicts, unreachable package index, missing system build deps, an invalid requirement line, or the install command exiting non-zero with output captured in `buf`.","commonSituations":"Conflicting pinned versions in requirements; private index unreachable or mis-authenticated from the worker; a package requiring compilation without build tools; a typo'd package name in requirements.txt.","solutions":["Read the buffered installer output after `{e:?}` in the message — it contains the package manager's actual failure (conflict, 404, etc.) — and fix the dependency list accordingly","Resolve version conflicts by pinning compatible versions or loosening constraints in requirements/lockfile","Verify the package index (PyPI or private mirror) is reachable and authenticated from the worker; fix index URL/credentials","Retry the job after fixing — the failure is not cached as success"],"exampleFix":"# before (requirements)\nrequests==2.20.0\nurllib3>=2.0\n# after (compatible pins)\nrequests==2.31.0\nurllib3>=2.0,<3","handlingStrategy":"retry","validationCode":"// pre-check that requirements resolve with the same resolver before deploying\n// uv pip compile requirements.txt > /dev/null && echo resolvable","typeGuard":null,"tryCatchPattern":"// wrapper around job submission\nlet res = run_job(...).await;\nif let Err(e) = &res {\n    if let Some(out) = extract_installer_output(&e.to_string()) {\n        log::error!(\"dependency install output: {out}\");\n    }\n}","preventionTips":["Compile/lock requirements ahead of time and pin exact versions","Pre-build a worker image containing heavy dependencies to shrink the install surface","Ensure private index credentials are present in the worker env","Validate requirement syntax with a dry-run resolve before submitting"],"tags":["dependencies","package-install","python","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"}