pip install --dry-run
to use platform and ABI overriding options. (#12215)is_yanked
boolean entry to the installation report (--report
) to indicate whether the requirement was yanked from the index, but was still selected by pip conform to PEP 592. (#12224)--report
). (#11924)datetime.datetime.utcnow
from non-vendored code. (#12005)shutil.rmtree()
in Python 3.12. (#12187)-r=...
instead of -r ...
to specify references with Mercurial. (#12306)pip search
support has been removed from PyPI (#12059)importlib.metadata
backend is used to load distribution metadata. This only affects the egg distribution format (with the .egg
extension); distributions using the .egg-info
metadata format (but are not actually eggs) are not affected. For more information about eggs, see relevant section in the setuptools documentation.freeze
no longer excludes the setuptools
, distribute
, and wheel
from the output when running on Python 3.12 or later, where they are not
included in a virtual environment by default. Use --exclude
if you wish to
exclude any of these packages. (#4256)pip completion --zsh
. (#11417)origin.json
files in the cache of locally built wheels. (#11985)dist-info-metadata
values from JSON-format index data. (#12042)--python
option is specified after the subcommand name. (#12067)importlib.metadata
(the default way for pip to read metadata in Python 3.11+) and there is a large overlap between already installed and to-be-installed packages. (#12079)-r
flag to mercurial to be explicit that a revision is passed and protect
against hg
options injection as part of VCS URLs. Users that do not have control on
VCS URLs passed to pip are advised to upgrade. (#12119)--install-options
. (#11358)--no-binary
does not imply setup.py install
anymore. Instead a wheel will be
built locally and installed. (#11451)--no-binary
does not disable the cache of locally built wheels anymore. It only
means "don't download wheels". (#11453)--build-option
and --global-option
. Users are invited to switch to
--config-settings
. (#11859)--config-settings
with projects that don't have a pyproject.toml
now prints
a deprecation warning. In the future the presence of config settings will automatically
enable the default build backend for legacy projects and pass the settings to it. (#11915)setup.py install
fallback when building a wheel failed for projects without
pyproject.toml
. (#8368)wheel
package is not installed, pip now uses the default build backend
instead of setup.py install
and setup.py develop
for project without
pyproject.toml
. (#8559)-vv
to pip install
to show it) (#10937)--config-settings
option in requirements files. (#11325)--config-settings
/-C
option now supports using the same key multiple
times. When the same key is specified multiple times, all values are passed to
the build backend as a list, as opposed to the previous behavior, where pip would
only pass the last value if the same key was used multiple times. (#11681)-C
as a short version of the --config-settings
option. (#11786)--hash
is used on a line without requirement in a requirements file. (#11935)--config-settings
to the build dependencies. They already did
not propagate to requirements provided in requirement files. To pass the same config
settings to several requirements, users should provide the requirements as CLI
arguments. (#11941)--require-hashes
. (#5037)--keyring-provider
flag. See the Authentication page in the documentation for more info. (#8719)AUTHORS.txt
in pip's wheels. (#11882)uninstall
and install --force-reinstall
commands no longer call
normalize_path()
repeatedly on the same paths. Instead, these results are
cached for the duration of an uninstall operation, resulting in improved
performance, particularly on Windows. (#11889)--require-hashes
option did not warn when user supplied hashes
were missing for package B. (#11938)requested_extras
in the installation report when extras are
specified for a local directory installation. (#11946)download_info.info.hashes
in the installation report, in addition to the legacy
download_info.info.hash
key. (#11948)jaraco.text
.--python
flag from the --prefix
flag,
and mention limitations of --prefix
regarding script installation. (#11775)pip index
(#11671)--break-system-packages
to permit installing packages into
EXTERNALLY-MANAGED
Python installations. (#11780)direct_url.json
. (#11773)archive_info.hashes
dictionary in direct_url.json
. (#11312)EXTERNALLY-MANAGED
file as specified in PEP 668.
This allows a downstream Python distributor to prevent users from using pip to
modify the externally managed environment. (#11381)keyring
found on PATH
. This allows keyring
installed using pipx
to be used by pip
. (#11589)0
to 1
. (#11757)egg
fragments in URL-style
requirements are formatted and handled. egg
fragments that do not look
like PEP 508 names now produce a deprecation warning. (#11617)pip show
show the editable location if package is editable (#11638)wheel
is present when build-system.requires
is provided without build-system.build-backend
as setuptools
(which we still check for) will inject it anyway. (#11673)pip install
(#11704)pip.X
, pipX.Y
, and easy_install-X.Y
to correctly account for multi-digit Python version segments (e.g. the "11"
part of 3.11). (#11547)--install-options
which forces pip to use the deprecated install
command of setuptools
. (#11358)`--no-binary
disabling the wheel cache. (#11454)--use-feature=2020-resolver
opt-in flag. This was supposed to be removed in 21.0, but missed during that release cycle. (#11493)pip list --outdated
in combination with --format=freeze
. (#9789)shell=True
for opening the editor with pip config edit
. (#10716)data-dist-info-metadata
attribute from PEP 658 to resolve distribution metadata without downloading the dist yet. (#11111)--python
option to allow pip to manage Python environments other
than the one pip is installed in. (#11320)--no-index
when --index-url
or --extra-index-url
is specified
inside a requirements file. (#11276)pip
executable exists, when checking for a new version of pip. (#11309)Name
in metadata instead of crashing, when
using the importlib.metadata
backend. (#11352)AttributeError
when removing the setuptools-provided _distutils_hack
and it is missing its implementation. (#11314)distutils
is available by default. This is done by cooperating with
setuptools' injection logic to ensure that pip uses the distutils
from the
Python standard library instead. (#11298)pip cache
's wheels-related output is about locally built wheels only. (#11300)html5lib
deprecated feature flag. (#10825)--use-deprecated=backtrack-on-build-failures
. (#11241)Add support to use truststore as an
alternative SSL certificate verification backend. The backend can be enabled on Python
3.10 and later by installing truststore
into the environment, and adding the
--use-feature=truststore
flag to various pip commands.
truststore
differs from the current default verification backend (provided by
certifi
) in it uses the operating system’s trust store, which can be better
controlled and augmented to better support non-standard certificates. Depending on
feedback, pip may switch to this as the default certificate verification backend in
the future. (#11082)
Add --dry-run
option to pip install
, to let it print what it would install but
not actually change anything in the target environment. (#11096)
Record in wheel cache entries the URL of the original artifact that was downloaded
to build the cached wheels. The record is named origin.json
and uses the PEP 610
Direct URL format. (#11137)
pip's deprecation warnings now subclass the built-in DeprecationWarning
, and
can be suppressed by running the Python interpreter with
-W ignore::DeprecationWarning
. (#11225)
Add pip inspect
command to obtain the list of installed distributions and other
information about the Python environment, in JSON format. (#11245)
Significantly speed up isolated environment creation, by using the same sources for pip instead of creating a standalone installation for each environment. (#11257)
Add an experimental --report
option to the install command to generate a JSON report
of what was installed. In combination with --dry-run
and --ignore-installed
it
can be used to resolve the requirements. (#53)
pip install --pre
for packages with pre-release build dependencies defined
both in pyproject.toml
's build-system.requires
and setup.py
's
setup_requires
. (#10222)RECORD
file entry. (#10744).dist-info
directory found inside a wheel-like zip file
as metadata for an installed distribution. A package in a wheel is (by
definition) not installed, and is not guaranteed to work due to how a wheel is
structured. (#11217)importlib.resources
to read the vendor.txt
file in pip debug
.
This makes the command safe for use from a zipapp. (#11248)--use-pep517
option of the download
command apply not just
to the requirements specified on the command line, but to their dependencies,
as well. (#9523)importlib.metadata
metadata implementation by default on
Python 3.11 (or later). The environment variable _PIP_USE_IMPORTLIB_METADATA
can still be used to enable the implementation on 3.10 and earlier, or disable
it on 3.11 (by setting it to 0
or false
).REQUESTED
metadata when using URL constraints. (#11079)pip config
now normalizes names by converting underscores into dashes. (#9330)pkg_resources
to importlib.metadata
. The new implementation is currently not exposed in
any user-facing way, but included in the code base for easier development.--use-deprecated=out-of-tree-build
, according to deprecation message. (#11001)pip show
output. (#10799)pip config edit
is provided an editor that
doesn't exist. (#10812)--no-build-isolation
. (#9794)pip.exe
from trying to modify itself, on Windows. (#10560)setup.py
is present in a project, but setuptools
cannot be imported. (#10717)progress
from vendored dependencies.pyparsing
to 3.0.8 for startup performance improvements.scheme://
requirement to --proxy
option's description (#10951)pip config --help
output. (#11074)rich.traceback
, when running with --debug
. (#10791)Only calculate topological installation order, for packages that are going to be installed/upgraded.
This fixes an AssertionError that occurred when determining installation order, for a very specific combination of upgrading-already-installed-package + change of dependencies + fetching some packages from a package index. This combination was especially common in Read the Docs' builds. (#10851)
Use html.parser
by default, instead of falling back to html5lib
when --use-deprecated=html5lib
is not passed. (#10869)
html5lib
-based parsing for now. This simplifies the migration for non-compliant index pages, by letting such indexes function with a warning. (#10847)<!doctype html>
on index pages. (#10844)--use-deprecated=html5lib
. (#10846)Deprecate alternative progress bar styles, leaving only on
and off
as available choices. (#10462)
Drop support for Python 3.6. (#10641)
Disable location mismatch warnings on Python versions prior to 3.10.
These warnings were helping identify potential issues as part of the sysconfig -> distutils transition, and we no longer need to rely on reports from older Python versions for information on the transition. (#10840)
Changed PackageFinder
to parse HTML documents using the stdlib :class:`html.parser.HTMLParser` class instead of the html5lib
package.
For now, the deprecated html5lib
code remains and can be used with the --use-deprecated=html5lib
command line option. However, it will be removed in a future pip release. (#10291)
Utilise rich
for presenting pip's default download progress bar. (#10462)
Present a better error message when an invalid wheel file is encountered, providing more context where the invalid wheel file is. (#10535)
Documents the --require-virtualenv
flag for pip install
. (#10588)
pip install <tab>
autocompletes paths. (#10646)
Allow Python distributors to opt-out from or opt-in to the sysconfig
installation scheme backend by setting sysconfig._PIP_USE_SYSCONFIG
to True
or False
. (#10647)
Make it possible to deselect tests requiring cryptography package on systems where it cannot be installed. (#10686)
Start using Rich for presenting error messages in a consistent format. (#10703)
Improve presentation of errors from subprocesses. (#10705)
Forward pip's verbosity configuration to VCS tools to control their output accordingly. (#8819)
==
or ===
operators. (#10617)Value for <location> does not match
warning caused by an erroneous patch in Slackware-distributed Python 3.9. (#10668)pyproject.toml
nor
setup.py
. (#10531)os.getuid
if it exists, on Unix-y and non-Linux/non-MacOS machines. (#10565)pyproject.toml
in editable mode, and the build
backend does not support PEP 660, prepare metadata using
prepare_metadata_for_build_wheel
instead of setup.py egg_info
. Also, refuse
installing projects that only have a setup.cfg
and no setup.py
nor
pyproject.toml
. These restore the pre-21.3 behaviour. (#10573)Library/Application Support/pip
, instead of Preferences/pip
). (#10585)ensurepip
does not emit warnings on CPython make install
. (#10270)sysconfig
. This is to anticipate the deprecation of distutils
in Python
3.10, and its scheduled removal in 3.12. For compatibility considerations, pip
installations running on Python 3.9 or lower will continue to use distutils
. (#10358)--build-dir
option and aliases, one last time. (#10485)--use-feature=in-tree-build
is now
ignored. --use-deprecated=out-of-tree-build
may be used temporarily to ease
the transition. (#10495)pip freeze
and pip list
. The pip list
column output
has a new Editable project location
column, and the JSON output has a new
editable_project_location
field. (#10249)pip freeze
will now always fallback to reporting the editable project
location when it encounters a VCS error while analyzing an editable
requirement. Before, it sometimes reported the requirement as non-editable. (#10410)pip show
now sorts Requires
and Required-By
alphabetically. (#10422)pip cache purge/remove
.
Instead log a warning and continue (to log that we removed 0 files). (#10459)pyproject.toml
and use a
build backend that supports PEP 660. (#8212)--debug
flag, to enable a mode that doesn't log errors and propagates them to the top level instead. This is primarily to aid with debugging pip's crashes. (#9349)file:
URL is not found. (#10263)data-requires-python
and data-yanked
attributes. (#10378)easy_install
is deprecated. (#10430)sysconfig.get_preferred_scheme
function check to be
compatible with CPython 3.10’s alphareleases. (#10252)pip freeze
, pip list
, and pip show
no longer normalize underscore
(_
) in distribution names to dash (-
). This is a side effect of the
migration to importlib.metadata
, since the underscore-dash normalization
behavior is non-standard and specific to setuptools. This should not affect
other parts of pip (for example, when feeding the pip freeze
result back
into pip install
) since pip internally performs standard PEP 503
normalization independently to setuptools.distutils
-sysconfig
transition. (#10151)--find-links
option in pip freeze
(#9069)New resolver: Loosen URL comparison logic when checking for direct URL reference equivalency. The logic includes the following notable characteristics:
egg=
, is explicitly ignored. Only
subdirectory=
and hash values (e.g. sha256=
) are kept.Support TOML v1.0.0 syntax in pyproject.toml
. (#10034)
Added a warning message for errors caused due to Long Paths being disabled on Windows. (#10045)
Change the encoding of log file from default text encoding to UTF-8. (#10071)
Log the resolved commit SHA when installing a package from a Git repository. (#10149)
Add a warning when passing an invalid requirement to pip uninstall
. (#4958)
Add new subcommand pip index
used to interact with indexes, and implement
pip index version
to list available versions of a package. (#7975)
When pip is asked to uninstall a project without the dist-info/RECORD file it will no longer traceback with FileNotFoundError, but it will provide a better error message instead, such as:
ERROR: Cannot uninstall foobar 0.1, RECORD file not found. You might be able to recover from this via: 'pip install --force-reinstall --no-deps foobar==0.1'.
When dist-info/INSTALLER is present and contains some useful information, the info is included in the error message instead:
ERROR: Cannot uninstall foobar 0.1, RECORD file not found. Hint: The package was installed by rpm.
(#8954)
Add an additional level of verbosity. --verbose
(and the shorthand -v
) now
contains significantly less output, and users that need complete full debug-level output
should pass it twice (--verbose --verbose
or -vv
). (#9450)
New resolver: The order of dependencies resolution has been tweaked to traverse the dependency graph in a more breadth-first approach. (#9455)
Make "yes" the default choice in pip uninstall
's prompt. (#9686)
Add a special error message when users forget the -r
flag when installing. (#9915)
New resolver: A distribution's Requires-Python
metadata is now checked
before its Python dependencies. This makes the resolver fail quicker when
there's an interpreter version conflict. (#9925)
Suppress "not on PATH" warning when --prefix
is given. (#9931)
Include rustc
version in pip's User-Agent
, when the system has rustc
. (#9987)
pip freeze
. (#10080)file://
URL built from an path with the Windows
drive notation. This fixes bugs where the file://
URL cannot be correctly
used as requirement, constraint, or index URLs on Windows. (#10115)file://localhost/
and
file:///
as equivalent to conform to RFC 8089. (#10162)--extra-index-url
options. (#3931)git+protocol://git.example.com/MyProject#egg=MyProject
format
rather than the old and no longer supported git+git@
format. (#9822)tornado
import in vendored tenacity
to prevent old versions of Tornado from breaking pip. (#10020)setup.cfg
-only projects to be built via PEP 517, by requiring an explicit dependency on setuptools declared in pyproject.toml. (#10031)pyproject.toml
, setup.py
or setup.cfg
. (#9944)distutils
-sysconfig
transition. (#9912)distutils
to sysconfig
. A
warning is implemented to detect differences between the two implementations to
encourage user reports, so we can avoid breakages before they happen.--use-feature=in-tree-build
to build local projects in-place
when installing. This is expected to become the default behavior in pip 21.3;
see Installing from local packages
for more information. (#9091)pip install
. (#9748)--build-option
. Warn when doing a PEP 517 build in presence of
--global-option
. (#9774)--target
to work with --editable
installs. (#4390).dist-info
directories if the stem is not a valid Python distribution
name, so they don't show up in e.g. pip freeze
. (#7269)pip freeze
permission denied error in order to display an understandable error message and offer solutions. (#8418)scripts
argument), when installed with --user
. (#8733)req @ URL
) and via version specifier with extras (req[extra]
), the
resolver will now be able to use the URL to correctly resolve the requirement
with extras. (#8785)--user
is no longer suggested incorrectly when pip fails with a permission
error in a virtual environment. (#9409)Requires-Python
conflicts. (#9541)--cert
help text. (#6720)pip freeze
permission denied issue. (#8418)--extra-index-url
and dependency confusion (#9647)--upgrade-strategy
and direct requirements explicitly; add a brief
example. (#9692)--ignore-requires-python
support to pip download. (#1884)pip wheel
do a VCS export instead of a VCS clone
for editable requirements. This broke VCS requirements that need the VCS
information to build correctly. (#9273)pip download
of editable VCS requirements that need VCS information
to build correctly. (#9337)pip wheel
now verifies the built wheel contains valid metadata, and can be
installed by a subsequent pip install
. This can be disabled with
--no-verify
. (#9206)==
or ===
) requirements first
to improve resolver performance. (#9185)--help
is given a list of strings, instead of a single string. (#9191)packaging.version
to avoid edge
cases if a wheel used different version normalization logic in its filename
and metadata. (#9083)pip wheel
generate zip files of editable
requirements in the wheel directory. (#9122)pip freeze
will stop filtering the pip
, setuptools
, distribute
and wheel
packages from pip freeze
output in a future version.
To keep the previous behavior, users should use the new --exclude
option. (#4256)--find-links
option in pip freeze
(#9069)--exclude
option to pip freeze
and pip list
commands to explicitly exclude packages from the output. (#4256)--format
to subcommand list
of pip cache
, with abspath
choice to output the full path of a wheel file. (#8355)setup.py install
deprecation warning less noisy. We warn only
when setup.py install
succeeded and setup.py bdist_wheel
failed, as
situations where both fails are most probably irrelevant to this deprecation. (#8752)fast-deps
feature is used with
pip wheel
and pip download
. (#8804)pip cache info
and pip cache purge
commands. (#8892)--build-dir
option, as per the deprecation. (#9049)--extra-index-url
from requirements file properly to session auth,
so that keyring auth will work as expected. (#8103)pip download
when using the new resolver to make the behavior the same as
that on the legacy resolver. (#8696)pip download
or pip wheel
. (#8827)--hash
options, only hashes that present in all specifications
should be allowed. (#8839)direct_url.json
metadata file
with editable=True. Render it as a non-editable file://
URL until modern
editable installs are standardized and supported. (#8996)vendor.txt
should not be removed.
It is mandatory for pip debug
command.Requires-Python
metadata to reject
incompatible packages in --no-deps
mode. (#8758)--hash
options, only hashes that present in all specifications
should be allowed. (#8839)setup.py install
deprecation warning less noisy. We warn only
when setup.py install
succeeded and setup.py bdist_wheel
failed, as
situations where both fails are most probably irrelevant to this deprecation. (#8752)system-site-packages
on. (#8695)fast-deps
. (#8701, #8716)pyvenv.cfg
to match the built-in venv
. (#8717)pip list
(#8603).
) in the name
and uninstall them when needed. (#8645).data
files in wheels. (#8654)--no-deps
mode. (#8677).egg-info
directory. (#6998, #8617)--install-options
. (#7309)--always-unzip
(#8408)Log debugging information about pip, in pip install --verbose
. (#3166)
Refine error messages to avoid showing Python tracebacks when an HTTP error occurs. (#5380)
Install wheel files directly instead of extracting them to a temp directory. (#6030)
Add a beta version of pip's next-generation dependency resolver.
Move pip's new resolver into beta, remove the
--unstable-feature=resolver
flag, and enable the
--use-feature=2020-resolver
flag. The new resolver is
significantly stricter and more consistent when it receives
incompatible instructions, and reduces support for certain kinds of
:ref:`Constraints Files`, so some workarounds and workflows may
break. More details about how to test and migrate, and how to report
issues, at :ref:`Resolver changes 2020` . Maintainers are preparing to
release pip 20.3, with the new resolver on by default, in October. (#6536)
Introduce a new ResolutionImpossible error, raised when pip encounters un-satisfiable dependency conflicts (#8546, #8377)
Add a subcommand debug
to pip config
to list available configuration sources and the key-value pairs defined in them. (#6741)
Warn if index pages have unexpected content-type (#6754)
Allow specifying --prefer-binary
option in a requirements file (#7693)
Generate PEP 376 REQUESTED metadata for user supplied requirements installed by pip. (#7811)
Warn if package url is a vcs or an archive url with invalid scheme (#8128)
Parallelize network operations in pip list
. (#8504)
Allow the new resolver to obtain dependency information through wheels
lazily downloaded using HTTP range requests. To enable this feature,
invoke pip
with --use-feature=fast-deps
. (#8588)
Support --use-feature
in requirements files (#8601)
--prefix
, instead of the virtual
environment pip is running in. (#8521)--no-input
option to pip docs (#7688)pip list --outdated
. (#8167)pip cache dir
to show the cache directory. (#7350)--skip-requirements-regex
option. (#7297)tests/scripts/test_all_pip.py
test script and the tests/scripts
folder. (#7680)pip freeze
has better fidelity
in presence of distributions installed from Direct URL requirements. (#609)pip cache
command for inspecting/managing pip's wheel cache. (#6391)--user
and --target
are used together in pip install
(#7249)--find-links
points to a very large HTML page. (#7729)wheel
package. (#7768)--unstable-feature=resolver
. (#988)%2F
in URL parameters to avoid accidentally unescape them
into /
. (#6446)--index-url
(#7430)sys.path
when invoked as python -m pip <command>
(#7731)pip wheel
when $TMPDIR
is within the source directory. (#7872)pip list --outdated
by parallelizing index interaction. (#7962)packaging.tags
. This
should provide more tags ordered better than in prior releases. (#6908).egg-info
directory. (#6998)--skip-requirements-regex
option. (#7297)--install-option
. (#7309)cp3-none-any
from consideration. This behavior was not documented strictly, and this
tag in particular is not useful.
Anyone with a use case can create an issue with pypa/packaging. (#7355)git+git@
form of VCS requirement is being deprecated and
will be removed in pip 21.0. Switch to git+https://
or
git+ssh://
. git+git://
also works but its use is discouraged as it is
insecure. (#7543)--user
was passed) when the main
site-packages directory is not writeable and user site-packages are enabled. (#1668)pip install
. (#6414)--no-python-version-warning
to silence warnings
related to deprecation of Python versions. (#6673)pip wheel
built locally, matching what
pip install
does. This particularly helps performance in workflows where
pip wheel
is used for building before installing.
Users desiring the original behavior can use pip wheel --no-cache-dir
. (#6852)pip debug
. (#7146)pip
. (#7376)pip wheel
now builds all wheels to a cache first,
then copies them to the wheel directory all at once.
Before, it built them to a temporary directory and moved
them to the wheel directory one by one. (#7517)~
prefix to user directory in path options, configs, and
environment variables. Values that may be either URL or path are not
currently supported, to avoid ambiguity:--find-links
--constraint
, -c
--requirement
, -r
--editable
, -e
(#980)pyproject.toml
build-system.requires
. (#6410)ensure_dir()
also ignore ENOTEMPTY
as seen on Windows. (#6426)backend-path
in pyproject.toml. (#6599)setup.py clean
after a pep517
build error,
since a setup.py
may not exist in that case. (#6642)--trusted-host
. (#7207)pip wheel
never outputs pure python wheels with a
python implementation tag. Better fix/workaround for
#3025 by
using a per-implementation wheel cache instead of caching pure python
wheels with an implementation tag in their name. (#7296)subdirectory
URL fragments in cache keys. (#7333)--build-option
, --global-option
and --install-option
is used in requirements.txt (#7340)setup.py
. (#6606)svn+
(which is backwards-compatible). (#7037)--venv
option from pip config
. (#7163)--no-binary
or --only-binary
is given
an argument starting with -
. (#3191)pip show
warn about packages not found. (#6858)--trusted-host
for both HTTP and HTTPS. (#6886)hg+file
scheme. (#4358)rmtree_errorhandler
to skip non-existing directories. (#4910)pip-wheel-metadata
directory does not need to persist between invocations of pip, use a temporary directory instead of the current setup.py
directory. (#6213)--trusted-host
processing under HTTPS to trust any port number used
with the host. (#6705)distlib
wheel script template. This should be functionally
equivalent for end users. (#6763)~
expansion not to occur in --find-links
paths. (#6804)flit install --symlink
. (#6892)Required-By
in pip show
. (#6947)pip config
(#6991)pip freeze
not showing correct entry for mercurial packages that use subdirectories. (#7071)sys.stdin
is set to None
, such as on AWS Lambda. (#7118, #7119)--ignore-installed
is dangerous. (#6794)~
expansion not to occur in --find-links
paths. (#6804)NoneType
AttributeError
when evaluating hashes and no hashes
are provided. (#6772)--trusted-host
inside requirements files. (#3799)--log
file to include milliseconds. (#6587)METADATA
or PKG-INFO
is None when
accessing metadata. (#5082)pip debug
that can display e.g. the list of compatible
tags for the current Python. (#6638)PIP_IS_CI
environment variable is set. (#5499)--python-version
to be passed as a dotted version string (e.g.
3.7
or 3.7.3
). (#6585).whl
file when done building a
wheel. (#5908)--path
argument to pip freeze
to support --target
installations. (#6404)--path
argument to pip list
to support --target
installations. (#6551)sys.argv[0]
to the underlying setup.py
when invoking setup.py
via the setuptools shim so setuptools doesn't think the path is -c
. (#1890)pip download
to respect the given --python-version
when checking
"Requires-Python"
. (#5369)--global-option
and --install-option
when installing from
a version control url (e.g. git
). (#5518)pip install
to respect --ignore-requires-python
when evaluating
links. (#6371)pip install <url>
from permitting directory traversal if e.g.
a malicious server sends a Content-Disposition
header with a filename
containing ../
or ..\\
. (#6413)--find-links
. (#6489)pip freeze
can't generate a
requirement string for a particular distribution. (#6513)os.confstr
to ctypes
when extracting glibc version info. (#6543, #6675)pyproject.toml
handling to how it was with pip 19.0.3 to prevent
the need to add --no-use-pep517
when installing in editable mode. (#6434)sys.prefix
(#5060)PIP_USER_AGENT_USER_DATA
environment variable. (#5549)--no-cache-dir
no longer affects whether wheels
will be built. In this case, a temporary directory is used. (#5749)subprocess
log messages are now quoted using
shlex.quote()
. (#6290)--build-options
in a PEP 517 build now fails with an error,
rather than silently ignoring the option. (#6305)pyproject.toml
-style (PEP 517) source tree using --editable
mode. (#6314)git
, hg
, etc.) no longer pollute pip's stdout. (#1219)utils.encoding.auto_decode()
LookupError
with invalid encodings.
utils.encoding.auto_decode()
was broken when decoding Big Endian BOM
byte-strings on Little Endian or vice versa. (#6054)pip -v
. (#6295)pyproject.toml
is
present but PEP 517 doesn't require the source tree to be treated as
pyproject.toml
-style. (#6370)NameError
when handling an invalid requirement. (#6419)--find-links
in the text. (#6422)IndexError
crash when a legacy build of a wheel fails. (#6252)--no-cache-dir
would fail in
some circumstances with an AssertionError
due to not finalizing a build
directory internally. (#6197)pyproject.toml
but no setup.py
. (#6170)pyproject.toml
file without explicitly specifying build-backend
now behaves more like direct
execution of setup.py
, and hence should restore compatibility with projects
that were unable to be installed with pip
19.0. This raised the minimum
required version of setuptools
for such builds to 40.8.0. (#6163)RECORD
lines with more than three elements, and display a warning. (#6165)AdjacentTempDirectory
fails on unwritable directory instead of locking up the uninstall command. (#6169)--process-dependency-links
option. (#6060).pth
files, so namespace packages are correctly supported under Python 3.2 and earlier. (#5656)--[extra-]index-url
value that points to an existing local directory. (#5827)--log
file lines with their timestamp. (#6141)requests.exceptions.RetryError
raised in PackageFinder
that was causing pip to fail silently when some indexes were unreachable. (#5270, #5483)pip list | head
). (#4170)PIP_NO_CACHE_DIR=yes
. (#5385)pip list --outdated --not-required
(#5737)TypeError
in move_wheel_files()
when installing some packages. (#5868)python src/pip ...
. (#5841)pip install
. (#5870)PIP_NO_CACHE_DIR
disable the cache also for truthy values like "true"
, "yes"
, "1"
, etc. (#5735)#egg=<name>-<version>
functionality (#5888)Allow PEP 508 URL requirements to be used as dependencies.
As a security measure, pip will raise an exception when installing packages from PyPI if those packages depend on packages not also hosted on PyPI. In the future, PyPI will block uploading packages with such external URL dependencies directly. (#4187)
Allows dist options (--abi, --python-version, --platform, --implementation) when installing with --target (#5355)
Support passing svn+ssh
URLs with a username to pip install -e
. (#5375)
pip now ensures that the RECORD file is sorted when installing from a wheel file. (#5525)
Add support for Python 3.7. (#5561)
Malformed configuration files now show helpful error messages, instead of tracebacks. (#5798)
Remove the legacy format from pip list. (#3651, #3654)
Dropped support for Python 3.3. (#3796)
Remove support for cleaning up #egg fragment postfixes. (#4174)
Remove the shim for the old get-pip.py location. (#5520)
For the past 2 years, it's only been redirecting users to use the newer https://bootstrap.pypa.io/get-pip.py location.
<file>
, <dir>
or <path>
as metavar. (#4842, #5125)Update pip's self-check logic to not use a virtualenv specific file and honor cache-dir. (#3905)
Remove compiled pyo files for wheel packages. (#4471)
Speed up printing of newly installed package versions. (#5127)
Restrict install time dependency warnings to directly-dependant packages. (#5196, #5457)
Warning about the entire package set has resulted in users getting confused as to why pip is printing these warnings.
Improve handling of PEP 518 build requirements: support environment markers and extras. (#5230, #5265)
Remove username/password from log message when using index with basic auth. (#5249)
Remove trailing os.sep from PATH directories to avoid false negatives. (#5293)
Fix "pip wheel pip" being blocked by the "don't use pip to modify itself" check. (#5311, #5312)
Disable pip's version check (and upgrade message) when installed by a different package manager. (#5346)
This works better with Linux distributions where pip's upgrade message may result in users running pip in a manner that modifies files that should be managed by the OS's package manager.
Check for file existence and unlink first when clobbering existing files during a wheel install. (#5366)
Improve error message to be more specific when no files are found as listed in as listed in PKG-INFO. (#5381)
Always read pyproject.toml
as UTF-8. This fixes Unicode handling on Windows and Python 2. (#5482)
Fix a crash that occurs when PATH not set, while generating script location warning. (#5558)
Disallow packages with pyproject.toml
files that have an empty build-system table. (#5627)
ioctl(fd, termios.TIOCGWINSZ, ...)
needs 8 bytes of data (#5150)--target
is specified. (#5203)--egg
parameter to pip install
. (#1749)--download
option to pip install
. (#2643)pip install
and pip
wheel
. (#2699)--allow-external
, --allow-all-external
, and
--allow-unverified
options. (#3070)pip list
to the columns format, and deprecate the
legacy format. (#3654, #3686)--default-vcs
option. (#4052)setup.py test
support from our sdist as it wasn't being
maintained as a supported means to run our tests. (#4203)pip freeze
. (#4449)pip download
, pip install
and
pip wheel
commands, to allow selecting a specific progress indicator or,
to completely suppress, (for example in a CI environment) use
--progress-bar off`
. (#2369, #2756)${VARIABLE}
syntax on all platforms. (#3728)pip freeze
and pip list
to exclude
editable packages from installed package list. (#4015, #4016)pip install ./requirements.txt
case. (#4127)@ url
syntax from PEP 508. (#4175)pip download
to be used with a specific platform when --no-deps
is set. (#4289)setup.py install
. Wheels from these sources are not
cached. (#4501)pip show
now autocompletes
installed distribution names. (#4749)GIT_DIR
and GIT_WORK_TREE
environment
variables are set. (#1130)pip install --force-reinstall
not require passing --upgrade
.
(#1139)pip uninstall
when easy-install.pth
lacks a trailing newline.
(#3741)-q
specified once correctly sets logging level to WARNING, instead of
CRITICAL. Use -qqq to have the previous behavior back. (#3994)pip3
instead of pip
) (#3997)utf8
to utf-8
. (#4076)pip install --target
is
used. (#4092)/etc/image_version
(or another distro version file)
appears to exists but is not readable. (#4249)freeze
warning message due to a package being
included in multiple requirements files that were passed to freeze
.
Instead of warning incorrectly that the package is not installed, pip now
warns that the package was declared multiple times and lists the name of each
requirements file that contains the package in question. (#4293)compile
/no-compile
flags. (#4316)/etc
is not readable by the current user by using a
hardcoded list of possible names of release files. (#4320)NameError
when attempting to catch FileNotFoundError
on
Python 2.7. (#4322)master
branch exists. (#4448)pip install -e
on a Git url would fail to update if a
branch or tag name is specified that happens to match the prefix of the
current HEAD
commit hash. (#4675)--no-user
option and use it when installing build dependencies.
(#5085)format
) rather than the incorrect one
(list_format
). (#4058)pip check
to check all available distributions and not just the
local ones. (#4083)#egg=
.pip install --egg
have been deprecated and will be
removed in the future. This "feature" has a long list of drawbacks which
break nearly all of pip's other features in subtle and hard-to-diagnose
ways.--default-vcs
option. (#4052)--upgrade-strategy
option to pip install
, to control how
dependency upgrades are managed. (#3972)pip check
command to check installed packages dependencies. (#3750)pip show
is less verbose by default. --verbose
prints multiline
fields. (#3858)pip list
. (#3651)--not-required
option to pip list
, which lists packages that are
not dependencies of other packages./tmp
directory for custom
builds such as numpy. (#3701)pip freeze
: when there is more than one git remote,
priority is given to the remote named origin
. (#3708, #3616).pip freeze
with invalid requirement installed.
(#3704, #3681)--requirement
files in pip freeze
. (#3703)data-requires-python
. When this field is
present for a release link, pip will ignore the download when
installing to a Python version that doesn't satisfy the requirement.pip wheel
now works on editable packages too (it was only working on
editable dependencies before); this allows running pip wheel
on the result
of pip freeze
in presence of editable requirements. (#3695, #3291).netrc
files. (#3715, #3569)--platform
, --python-version
, --implementation
and --abi
parameters to pip download
. These allow utilities and advanced users to
gather distributions for interpreters other than the one pip is being run on.
(#3760)pip completion
support for the fish
shell.git fetch --tags
to fetch tags in addition to everything else that
is normally fetched; this is necessary in case a git requirement url
points to a tag or commit that is not on a branch. (#3791)pip show
(#3976)--ignore-requires-python
option as escape hatch. (#3846)-i
shorthand for --index
flag in pip search
.svn
.
(#3697, #3209)--target
option. (#3694, #3682)pip freeze
. (#3680)--log
file. (#3351)call_subprocess
would crash trying to print debug
data on child process failure. (#3521, #3522)pip show
.pip show
. (#3517)pip search
results. (#1415)--require-hashes
is enabled.install --quiet
really quiet. (#3418)-v
/ --verbose
. (#3486)pip list --outdated
without the --pre
flag.--download-cache
which had been
deprecated and no-op'd in 6.0.--log-explicit-levels
which had been
deprecated in 6.0.--allow-external
, --allow-all-external
, and
--allow-unverified
functionality that was added as part of PEP 438. With
changes made to the repository protocol made in PEP 470, these options are no
longer functional.--trusted-host
within a requirements file. (#2822)--process-dependency-links
within a requirements file. (#1274)--pre
within a requirements file. (#1273)pip download
command and deprecate
pip install --download
.HOME=/
. Workaround for Python bug
https://bugs.python.org/issue14768. (#2996)pip freeze
and pip list
commands with
subversion >= 1.7. (#1062, #3346)setup.py
. This will alleviate concerns that
projects with unusually long build times have with pip appearing to stall.peep
into pip, allowing hashes to be baked
into a requirements file and ensuring that the packages being downloaded
match one of those hashes. This is an additional, opt-in security measure
that, when used, removes the need to trust the repository.--prefix
option for pip install
that supports wheels and
sdists. (#3252)setup.py
is not at the Git repo root
and when package_dir
is used, so pip freeze
works in more
cases. (#3258).egg-link
instead of looking for a VCS, so pip list -e
is more reliable. (#3258)--prefix
flag to pip install
which allows specifying a root
prefix to use instead of sys.prefix
. (#3252)--allow-all-external
within a requirements file.--user
could not be used when --prefix
was used
in a distutils configuration file.~
to be expanded within a cache directory in all situations.--no-cache-dir
would raise an exception. (#2855)requirements
files. (#2841)~
in the cache directory when caching wheels. (#2816)python -m pip
instead of pip
when recommending an upgrade command
to Windows users.--allow-all-external
inside of a requirements.txt file, fixing a
regression in 7.0.--mirror
,
--use-mirrors
, and -M
options.zip
and unzip
commands.--no-install
and
--no-download
options.--trusted-host
option."SomeProject; python_version < '2.7'"
, not simply
SomeProject; python_version < '2.7'
(#2697, #2725)--install-option
and --global-option
per requirement in
requirement files. (#2537)--no-use-wheel
and --use-wheel
are deprecated in favour of new
options --no-binary
and --only-binary
. The equivalent of
--no-use-wheel
is --no-binary=:all:
. (#2699)--install-option
, --global-option
or --build-option
disable the use of wheels, and the autobuilding of wheels. (#2711, #2677)pip install -U setuptools
will no longer upgrade "distribute"
to "setuptools". Instead, use pip install -U distribute
. (#2767)--log
if they wish to have one. (#2798)pip list --outdated
. (#2475)--wheel-dir
option, expanding out constructs such as ~
when used. (#2441)--download
flag would cause pip to no longer use
randomized build directories.!
).pip wheel
without a requirement.os.geteuid()
function.TypeError: not all arguments converted during string formatting
.TypeError: 'InstallationCandidate' object is not iterable
.TypeError: expected string or buffer
.sudo
without the -H
flag.>V
and <V
so that they no longer imply !=V.*
.-q
flag would not properly suppress the
display of the progress bars.--no-index
imply --disable-pip-version-check
.X.Y
where the leading 1
has been dropped.pip install --download-cache
and
pip wheel --download-cache
command line flags have been deprecated and
the functionality removed. Since pip now automatically configures and uses
it's internal HTTP cache which supplants the --download-cache
the
existing options have been made non functional but will still be accepted
until their removal in pip v8.0. For more information please see
https://pip.pypa.io/en/stable/reference/pip_install.html#caching
pip install --build
and pip install --no-clean
are now
NOT deprecated. This reverses the deprecation that occurred in v1.5.3.
(#906)--trusted-host
flag (pip install --trusted-host example.com foo
).--trusted-host
flag to also disable TLS verification for
a particular hostname.--user
flag to pip freeze
and pip list
to check the
user site directory only.--client-cert
option for SSL client certificates. (#1424)--no-use-wheel
within a requirements file. (#1859)pip search
.
(#1180, #932, #1104, #1902)$HOME
. (#2021).egg-info
directory by looking for any file
located inside of it instead of relying on the record file listing a
directory. (#2075, #2076)pip install --build
to only notify when
the --build value is different than the default.pip install --build
and pip install --no-clean
are now
deprecated. (#906)pip wheel
was not downloading wheels that already existed. (#1320, #1524)pip install --download
was failing using local --find-links
.
(#1111, #1524)pkg_resources
and _markerlib
to setuptools 2.1.Content-Encoding
header. (#1435)--use-mirrors
,
-M
, and --mirrors
flags. The mirroring support has been removed. In
order to use a mirror specify it as the primary index with -i
or
--index-url
, or as an additional index with --extra-index-url
.
(#1098, CVE-2013-5123)--allow-external PROJECT
and --allow-unverified PROJECT
. (#1055)--process-dependency-links
.pip install --no-install
and pip install
--no-download
are now formally deprecated. See #906 for discussion on
possible alternatives, or lack thereof, in future releases.pip zip
and pip unzip
are now formally deprecated.--ignore-installed
now behaves again as designed, after it was
unintentionally broke in v0.8.3 when fixing #14. (#1097, #1352)--user
wasn't being respected when installing scripts from wheels.
(#1163, #1176)subdirectory
editable option. (#1082)--log-file
option, is now shown as a general option.
(#1316)--pre
option to also find pre-release and development
versions. (#834)pip bundle
and support for installing from pybundle files is now
considered deprecated and will be removed in pip v1.5.install --download
to prevent re-downloading if the target
file already exists. Thanks Andrey Bulgakov. (#669)--egg
flag to request egg-style rather than flat installation.
Thanks Kamal Bin Mustafa. (#3)gmpy2-2.0.tar.gz
from matching a request to
pip install gmpy
; sdist filename must begin with full project name
followed by a dash. Thanks casevh for the report. (#510)hashlib
as a checksum hash.==dev
in requirements files. (#436)--target
option for installing directly to arbitrary directory.
Thanks Stavros Korokithakis.--download
now downloads dependencies as well. Thanks Qiangning Hong.
(#315)-E
/--environment
option and PIP_RESPECT_VIRTUALENV
;
both use a restart-in-venv mechanism that's broken, and neither one is
useful since every virtualenv now has pip inside it. Replace pip -E
path/to/venv install Foo
with virtualenv path/to/venv &&
path/to/venv/pip install Foo
.--exists-action
command line option to easier script file
exists conflicts, e.g. from editable requirements from VCS that have a
changed repo URL. (#351, #365)install -I
option. (#295)--editable
lines in requirements files. (#320)Added Python 3 support! Huge thanks to Vinay Sajip, Vitaly Babiy, Kelsey Hightower, and Alex Gronholm, among others.
Download progress only shown on a real TTY. Thanks Alex Morega.
Fixed finding of VCS binaries to not be fooled by same-named directories. Thanks Alex Morega.
Fixed uninstall of packages from system Python for users of Debian/Ubuntu python-setuptools package (workaround until fixed in Debian and Ubuntu).
Added get-pip.py installer. Simply download and execute it, using the Python interpreter of your choice:
$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py $ python get-pip.py
This may have to be run as root.
Note
Make sure you have distribute installed before using the installer!
Avoid redundant unpacking of bundles (from pwaller)
Fixed checking out the correct tag/branch/commit when updating an editable Git requirement. (#32, #150, #161)
Added ability to install version control requirements without making them editable, e.g.:
pip install git+https://github.com/pypa/pip/
(#49)
Correctly locate build and source directory on macOS. (#175)
Added git+https://
scheme to Git VCS backend.
build/
directories pip creates, never remove directories
it doesn't create. From Hugo Lopes Tavares.pip-2.7
etc. scripts are created (Python-version specific scripts)contrib/build-standalone
script creates a runnable .zip
form of
pip, from Jannis Leidel--editable
when multiple .egg-info/
directories
are found.pip freeze
, from Hugo Lopes Tavares.pip search
command.pip uninstall
.pip-log.txt
all over the place) and constantly overwrites the
file in question. On Unix and macOS this is '$HOME/.pip/pip.log'
and on Windows it's '%HOME%\\\pip\\\pip.log'
. You are still able to
override this location with the $PIP_LOG_FILE
environment variable.
For a complete (appended) logfile use the separate '--log'
command line
option.pip install path/to/dir/
).svn+ssh
URLs.https
and http-static
schemes to the
Mercurial and ftp
scheme to the Bazaar backend.pip bundle
and local files (which weren't being
copied into the bundle), from Whit Morriss.pip uninstall
and uninstall-before upgrade (from Carl Meyer).pip install Package==0.1
then pip install Package==0.2
.pip-log.txt
)
with the environmental variable $PIP_LOG_FILE
.pip freeze > stable-req.txt
) to get a file with requirements.<base href='...'>
when parsing
HTML pages.--find-links
,
e.g. --find-links=file:///path/to/my/private/archive
--no-deps
option to install ignore package dependencies--no-index
option to ignore the package index (PyPI) temporarily-e
work better with local hg repositoriespip zip
zip all its arguments, not just the first.-i
and --extra-index-url
options in requirements
files.-s
option to allow the access to the global site-packages if a
virtualenv is to be created.-e
).src/
).pip -h
sys.exit()
from inside the code, instead use a
return. This will make it easier to invoke programmatically.Package.egg-info/installed-files.txt
(previously they went in
site-packages/install-record-Package.txt
).pip freeze
not including -e svn+
when an
svn structure is peculiar.pip -E
to work with a virtualenv that uses a different
version of Python than the parent environment.-E
) option.-f
for packages..zip
extension and it is served with the wrong Content-Type.pip
install -e some/path/
will install the package in some/path/
.
Most importantly, anything that package requires will also be
installed by pip.--path
option to pip un/zip
, so you can avoid zipping
files that are outside of where you expect.--simulate
option to pip zip
.pip.py
without actually
installing pip.--upgrade
, which would download and appear to install
upgraded packages, but actually just reinstall the existing package.pip
script with Setuptools.pip
, and to install you now do pip install
PACKAGE
pip zip PACKAGE
and pip unzip PACKAGE
. This
is particularly intended for Google App Engine to manage libraries
to stay under the 1000-file limit.#egg=Package
).--install-option
to pass options to pass
arguments to setup.py install
.svn/
directories are no longer included in bundles, as these
directories are specific to a version of svn -- if you build a
bundle on a system with svn 1.5, you can't use the checkout on a
system with svn 1.4. Instead a file svn-checkout.txt
is
included that notes the original location and revision, and the
command you can use to turn it back into an svn checkout. (Probably
unpacking the bundle should, maybe optionally, recreate this
information -- but that is not currently implemented, and it would
require network access.)MyPackage/
and
mypackage/
are the same directory.$PIP_DOWNLOAD_CACHE
which will cache package downloads, so
future installations won't require large downloads. Network access
is still required, but just some downloads will be avoided when
using this.svn checkout
(not export
) so that
tag_svn_revision
settings give the revision of the package..pybundle
files.-E env
and the environment env/
doesn't exist, a
new virtual environment will be created.dependency_links
for finding packages.hashlib.md5
on python2.5+ (also from Prabhu Ramachandran)此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。