Get a list of top-level dependencies that need to be installed from the user Communicate with a Python package index server like PyPI to find out what packages (and their wheels) are available Resolve the dependency graph to know what needs to ultimately be installed Create a lock file for that dependency graph of wheel files Install the wheel files listed in the lock file Working with a resolver like resolvelib means you need the initial sets of requirements, the constraints it has to operate under (e.g., platform details), and the ability to update the requirements the resolver is working with as it learns about more edges in the dependency graph.