Upgrading pip 19 to 20
Breaking19.3.1 → 20.3.4Breaking10Security2Platform1Deprecated13New29Changed74Fixed73Other41
BreakingUpgrade verdict
10 breaking changes and a platform requirement change and 2 security fixes.
In plain terms
- The old --unstable-feature command line option is gone; anyone still passing it will get an error.
- pip now uses the new dependency resolver by default, which can change which package versions get installed.
- The --build-dir option has been removed.
- The command that lists outdated packages no longer checks packages in parallel, so it may be slower.
Must act Top 5 of 26 that need code or config changes
What you must change
Breaking10
Removes the deprecated --unstable-feature flag.
--unstable-featureSwitches to the new dependency resolver by default.
Removes the --build-dir option, as per the deprecation.
--build-dirDrops parallelization from pip list --outdated.
pip list --outdatedRemoves the deprecated --skip-requirements-regex option.
--skip-requirements-regexRemoves the interpreter-specific major version tag such as cp3-none-any from consideration.
cp3-none-anyWheel processing no longer permits wheels containing more than one top-level .dist-info directory.
.dist-infoDisallows passing install-location-related arguments in --install-options.
--install-optionsRemoves the undocumented and deprecated option --always-unzip.
--always-unzipReverts building of local directories in place, restoring pre-20.1 behaviour of copying to a temporary directory.
Security2
Redacts authentication credentials from URLs in help messages.
Fixes passwords being visible in the index-url in the "Downloading <url>" message.
index-urlPlatform1
Adds support for Python 3.9.
Deprecations to plan for
Deprecated13
Restores the --build-dir option as a no-op to soften the transition for tools that still use it.
--build-dirpip freeze will stop filtering pip, setuptools, distribute and wheel from output in a future version; use --exclude to keep the old behavior.
pip freeze--excludeDeprecates the --find-links option in pip freeze.
pip freeze--find-linksDeprecates support for Python 3.5.
Deprecates setup.py-based builds that do not generate an .egg-info directory.
setup.py.egg-infoAdds a deprecation warning for the invalid requirements format "base>=1.0[extra]".
Deprecates legacy setup.py install when building a wheel failed for source distributions without pyproject.toml.
setup.pypyproject.tomlDeprecates -b/--build/--build-dir/--build-directory, recommending TMPDIR/TEMP/TMP possibly with --no-clean.
-b--build--build-dir--build-directoryTMPDIRTEMPTMP--no-cleanDocuments that pip 21.0 will drop support for Python 2.7.
Deprecates setup.py-based builds that do not generate an .egg-info directory.
setup.py.egg-infoDeprecates the undocumented --skip-requirements-regex option.
--skip-requirements-regexDeprecates passing install-location-related options via --install-option.
--install-optionDeprecates the git+git@ form of VCS requirement, to be removed in pip 21.0; switch to git+https:// or git+ssh://.
git+git@git+https://git+ssh://git+git://