A software dependency is another component, tool, library or service required for some aspect of a program's construction or operation. Dependencies form a dependency graph; direct requirements can introduce additional transitive requirements. Dependency resolution selects versions satisfying the combined constraints.
For example, if one component requires library versions at least 2 but below 3, while another requires at least 3, no single library version satisfies both in one shared installation. A resolver must report the conflict or use an isolation mechanism that genuinely permits separate versions. Pip documents backtracking through candidate package versions to solve such constraints.[ref]
Dependency Resolution in the pip documentation. How it works and Dealing with dependency conflicts
Recording selected versions improves reproducibility, but the operating system, input data and execution settings can still affect the result. New to topics? Read the docs here!