Would like to support failure rollbacks eventually, in the mean time, this isĪlthough the new install order is not intended to replace (and does not replace) This has two main practical benefits:Ĭoncurrent use of the environment during the install is more likely to work.Ī failed install is less likely to leave a broken environment. Installations should proceed in a way that leaves the environment usable at each The decision to install topologically is based on the principle that Prior to v6.1.0, pip made no commitments about install order. Installing collected packages foo, baz, bar Installing collected packages baz, bar, foo, quux C:\> py -m pip install bar. Installation Order ¶Ĭ:\> py -m pip install quux. (as otherwise the versions would differ). The chosen version is available, it is assumed that any source is acceptable Satisfies the given constraints will be installed (but see hereįor an exception regarding pre-release versions). Once pip has the set of requirements to satisfy, it chooses which version ofĮach requirement to install using the simple rule that the latest version that Than using the egg_info command, but avoids downloading and processingĪny URL may use the #egg=name syntax (see VCS Support) toĮxplicitly state the project name. For sdists located via an index, the filename is parsedįor the name and project version (this is in theory slightly less reliable Specified sdist files, the setup.py egg_info command is used to determine whl file extension) this can be obtained from Working Out the Name and Version ¶įor each candidate item, pip needs to know the project name and version. Local file (a sdist or wheel format archive, following the namingĮach item identified is added to the set of requirements to be satisfied by Local directory (which must contain a setup.py, or pip will report When looking at the items to be installed, pip checks what type of item Note that pip install prefers to leave the installed version as-is Install the packages (and uninstall anything being upgraded/replaced). All the dependencies that can be are built into wheels. What will be installed is determined here.īuild wheels. The user supplied arguments are processed Pip also supports installing from “requirements files”, which provideĪn easy way to specify a whole environment to be installed. PyPI (and other indexes) using requirement specifiers.