Skip to content

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.

  • 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.
Top 5 of 26 that need code or config changes
Breaking10
Removes the deprecated --unstable-feature flag.
--unstable-feature
Switches to the new dependency resolver by default.
Removes the --build-dir option, as per the deprecation.
--build-dir
Drops parallelization from pip list --outdated.
pip list --outdated
Removes the deprecated --skip-requirements-regex option.
--skip-requirements-regex
Removes the interpreter-specific major version tag such as cp3-none-any from consideration.
cp3-none-any
Wheel processing no longer permits wheels containing more than one top-level .dist-info directory.
.dist-info
Disallows passing install-location-related arguments in --install-options.
--install-options
Removes the undocumented and deprecated option --always-unzip.
--always-unzip
Reverts 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-url
Platform1
Adds support for Python 3.9.
Deprecated13
Restores the --build-dir option as a no-op to soften the transition for tools that still use it.
--build-dir
pip freeze will stop filtering pip, setuptools, distribute and wheel from output in a future version; use --exclude to keep the old behavior.
pip freeze--exclude
Deprecates the --find-links option in pip freeze.
pip freeze--find-links
Deprecates support for Python 3.5.
Deprecates setup.py-based builds that do not generate an .egg-info directory.
setup.py.egg-info
Adds 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.toml
Deprecates -b/--build/--build-dir/--build-directory, recommending TMPDIR/TEMP/TMP possibly with --no-clean.
-b--build--build-dir--build-directoryTMPDIRTEMPTMP--no-clean
Documents 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-info
Deprecates the undocumented --skip-requirements-regex option.
--skip-requirements-regex
Deprecates passing install-location-related options via --install-option.
--install-option
Deprecates 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://