用法
Python -m pip install [options] <requirement specifier> [package-index-options] ...python -m pip install [options] -r <requirements file> [package-index-options] ...python -m pip install [options] [-e] <vcs project url> ...python -m pip install [options] [-e] <local project path> ...python -m pip install [options] <archive url/path> ...
py -m pip install [options] <requirement specifier> [package-index-options] ...py -m pip install [options] -r <requirements file> [package-index-options] ...py -m pip install [options] [-e] <vcs project url> ...py -m pip install [options] [-e] <local project path> ...py -m pip install [options] <archive url/path> ...
描述
从以下位置安装软件包:
使用需求说明符的 PyPI(和其他索引)。
VCS 项目 URL。
本地项目目录。
本地或远程源存档。
pip 还支持从“需求文件”安装,这些文件提供 一种指定要安装的整个环境的简单方法。
概述
pip install 有几个阶段:
确定基本要求。处理用户提供的参数 这里。
解析依赖关系。此处确定将安装的内容。
制造轮子。所有可以的依赖项都内置在轮子中。
安装软件包(并卸载任何正在升级/更换的内容)。
请注意,最好将安装的版本保持原样 除非指定。pip install--upgrade
参数处理
在查看要安装的项目时,pip 会检查项目类型 每个是,按以下顺序排列:
项目或存档 URL。
本地目录(必须包含 或 , 否则 pip 将报告错误)。pyproject.tomlsetup.py
本地文件(sdist 或 wheel 格式存档,在命名之后 这些格式的约定)。
版本说明符。
确定的每个项目都添加到要满足的要求集中 安装。
确定名称和版本
对于每个候选项目,pip 需要知道项目名称和版本。为 轮子(由文件扩展名标识),这可以从以下位置获得 文件名,根据 Wheel 规范。对于本地目录,或显式 指定的 sdist 文件,该命令用于确定 项目元数据。对于通过索引定位的 sdist,将解析文件名 对于名称和项目版本(理论上这不太可靠 比使用命令,但避免下载和处理 不必要的文件数)。.whlsetup.py egg_infoegg_info
任何 URL 都可以使用以下语法(请参阅 VCS 支持)来 显式说明项目名称。#egg=name
满足要求
一旦 pip 有一组要满足的要求,它就会选择哪个版本的 每个要求使用简单的规则安装,即最新版本 满足给定的约束条件(但有关预发布版本的例外情况,请参阅此处)。其中多个来源 所选版本可用,假设任何来源都是可以接受的 (否则版本会有所不同)。
获取有关已安装内容的信息
install 命令有一个选项,该选项将生成 JSON 报告,其中包含什么 pip 已安装。结合 和 它 可用于解决一组需求,而无需实际安装它们。--report--dry-run--ignore-installed
报告可以写入文件,也可以写入标准输出(使用 与 ) 组合。--report ---quiet
JSON 报告的格式在安装报告中进行了描述。
安装顺序
注意
本节仅介绍运行时依赖项的安装顺序,以及 不适用于生成依赖项(使用 [build-system] 表指定)。
从 v6.1.0 开始,pip 在其依赖项之前安装依赖项,即在 “拓扑顺序。”这是 pip 目前做出的唯一相关承诺 订购。虽然 pip 会把东西装进去可能是巧合 install 参数的顺序或 需求文件,这不是一个承诺。
在依赖循环(又称“循环依赖”)的情况下,当前 实现(以后可能会更改)使得第一个 遇到循环的成员是最后安装的。
例如,如果 quux 依赖于 foo,而 foo 依赖于 bar,而 bar 依赖于 baz, 这取决于 foo:
python -m pip install quux...Installing collected packages baz, bar, foo, quux$ python -m pip install bar...Installing collected packages foo, baz, bar
C:\> py -m pip install quux...Installing collected packages baz, bar, foo, quuxC:\> py -m pip install bar...Installing collected packages foo, baz, bar
在 v6.1.0 之前,pip 对安装顺序没有做出任何承诺。
拓扑安装的决定基于以下原则: 安装应以使每个环境都可用的方式进行 步。这有两个主要的实际好处:
在安装过程中并发使用环境更有可能起作用。
安装失败不太可能留下损坏的环境。虽然点子 希望最终支持失败回滚,同时,这是 一个改进。
尽管新的安装顺序不打算替换(也不会替换) 使用 来声明构建依赖项,它可能会有所帮助 从 SDIST 安装的项目(以前可能会失败)符合以下条件 轮廓:setup_requires
它们具有构建依赖项,这些依赖项也被声明为安装依赖项 用。install_requires
python setup.py egg_info无需其构建依赖项即可工作 安装。
无论出于何种原因,他们都不会或不会使用 .setup_requires
要求文件格式
此部分已移至“需求文件格式”。
需求说明符
此部分已移至需求说明符。
按要求覆盖
现在,这在需求文件格式中有所介绍。
预发布版本
从 v1.4 开始,pip 默认只会安装预发行版指定的稳定版本。如果某个版本无法解析为兼容版本,则假定它是 预发布。
如果需求说明符包含预发布版本或开发版本 (例如)则 pip 将允许预发布和开发版本 对于该要求。这不包括 != 标志。>=0.0.dev0
该命令还支持 --pre 标志 这样可以安装预发行版和开发版。pip install
VCS 支持
现在,VCS 支持中对此进行了介绍。
查找包
pip 使用 HTTP 简单接口在 PyPI 上搜索包, 这被记录在这里和那里。
pip 提供了许多包索引选项,用于修改包的 发现。
pip 在许多地方查找包:在 PyPI 上(如果未通过 https 禁用)、在本地文件系统中以及在任何其他存储库中 通过 或 指定。没有订购 搜索的位置。相反,它们都经过检查,并且是“最好的” 选择符合要求的匹配项(就版本号而言 - 有关详细信息,请参阅规范)。--no-index--find-links--index-url
请参阅 pip install 示例。
SSL证书验证
这现在包含在 HTTPS 证书中。
缓存
缓存现在对此进行了介绍。
车轮缓存
缓存现在对此进行了介绍。
哈希检查模式
现在,安全安装中对此进行了介绍。
本地项目安装
现在,本地项目安装中对此进行了介绍。
可编辑的安装
现在,本地项目安装中对此进行了介绍。
构建系统接口
现在,这在构建系统接口中进行了介绍。
选项
-r, --requirement <文件>
从给定的需求文件安装。此选项可以多次使用。
-c, --constrAInt <文件>
使用给定的约束文件约束版本。此选项可以多次使用。
--no-deps
不要安装包依赖项。
--前#
包括预发布版本和开发版本。默认情况下,pip 只查找稳定版本。
-e, --editable <path/url>
从本地项目路径或 VCS url 以可编辑模式(即 setuptools“开发模式”)安装项目。
--试运行
实际上不要安装任何东西,只需打印会是什么。可以与 --ignore-installed 结合使用以“解决”需求。
-t, --target <dir>
将软件包安装到 <dir> 中。默认情况下,这不会替换 <dir> 中的现有文件/文件夹。使用 --upgrade 将 <dir> 中的现有软件包替换为新版本。
--platform <platform>
仅使用与 <platform> 兼容的轮子。默认为正在运行的系统的平台。多次使用此选项可指定目标解释器支持的多个平台。
--python-version <python_version>
用于 wheel 和“Requires-Python”的 Python 解释器版本 兼容性检查。默认为从运行 译员。可以使用最多三个点分隔来指定版本 整数(例如,“3”表示 3.0.0,“3.7”表示 3.7.0,或“3.7.3”)。大调-小调 version 也可以作为不带点的字符串给出(例如,3.7.0 的“37”)。
--implementation <implementation>
仅使用与 Python 实现<实现>兼容的轮子,例如 'pp'、'jy'、'cp' 或 'ip'。如果未指定,则使用当前的解释器实现。使用 'py' 强制使用与实现无关的轮子。
--阿比<阿比>
仅使用与 Python abi <abi> 兼容的轮子,例如 'pypy_41'。如果未指定,则使用当前解释器 abi 标记。多次使用此选项可指定目标解释器支持的多个 abi。通常,使用此选项时需要指定 --implementation、--platform 和 --python-version。
--用户
安装到平台的 Python 用户安装目录。在 Windows 上通常为 ~/.local/ 或 %APPDATA%Python。(请参阅站点的 Python 文档。USER_BASE了解完整详情。
--root <dir>
安装与此备用根目录相关的所有内容。
--prefix <dir>
放置 lib、bin 和其他顶级文件夹的安装前缀。请注意,生成的安装可能包含引用 pip 的 Python 解释器的脚本和其他资源,而不是 .如果打算将软件包安装到另一个(可能是无 pip)环境中,另请参阅该选项。--prefix--python
--src <dir>
将可编辑项目签入到的目录。virtualenv 中的默认值为“<venv path>/src”。全局安装的默认值为“<current dir>/src”。
-U, --upgrade
将所有指定的程序包升级到最新的可用版本。依赖项的处理取决于所使用的升级策略。
--upgrade-strategy <upgrade_strategy>
确定应如何处理依赖项升级 [default: only-if-needed]。“eager” - 无论当前安装的版本是否满足升级后的软件包的要求,都会升级依赖项。“only-if-needed” - 仅当它们不满足升级后的软件包的要求时才进行升级。
--force-reinstall
重新安装所有软件包,即使它们已经是最新的。
-I, --ignore-installed
忽略已安装的软件包,覆盖它们。如果现有软件包是不同的版本或使用不同的软件包管理器安装的,这可能会破坏您的系统!
--ignore-requires-python
忽略 Requires-Python 信息。
--no-build-isolation
在构建新式源代码分发时禁用隔离。如果使用此选项,则必须已安装 PEP 518 指定的构建依赖项。
--使用-pep517
使用 PEP 517 构建源代码发行版(使用 --no-use-pep517 强制执行遗留行为)。
--check-build-dependencies
检查使用 PEP517 时的构建依赖关系。
--break-system-packages
允许 pip 修改 EXTERNALLY-MANAGED Python 安装
-C, --config-settings <设置>
要传递给 PEP 517 构建后端的配置设置。设置采用 KEY=VALUE 格式。使用多个 --config-settings 选项将多个密钥传递到后端。
--global-option <选项>
在 install 或 bdist_wheel 命令之前向 setup.py 调用提供额外的全局选项。
--编译
将 Python 源文件编译为字节码
--no-compile
不要将 Python 源文件编译为字节码
--no-warn-script-location
在 PATH 外部安装脚本时不要发出警告
--无警告冲突
不要警告损坏的依赖项
--no-binary <format_control>
不要使用二进制包。可以多次提供,每次都增加现有价值。接受 “:all:” 禁用所有二进制包,“:none:” 清空集合(注意冒号),或者一个或多个包名称之间有逗号(不带冒号)。请注意,某些软件包很难编译,并且在使用此选项时可能无法安装。
--only-binary <format_control>
不要使用源码包。可以多次提供,每次都增加现有价值。接受 “:all:” 以禁用所有源包,“:none:” 以清空集合,或者接受一个或多个包名称(它们之间带有逗号)。没有二进制发行版的软件包在使用此选项时将无法安装。
--prefer-binary
首选二进制包而不是源包,即使源包较新。
--require-hashes
需要哈希值来检查每个要求,以实现可重复的安装。当需求文件中的任何包具有 --hash 选项时,此选项是隐含的。
--progress-bar <progress_bar>
指定是否应使用进度条 [on, off](默认:on)
--root-user-action <root_user_action>
如果 pip 以 root 用户身份运行,则执行操作。默认情况下,将显示一条警告消息。
--report <文件>
生成一个 JSON 文件,描述 pip 为安装所提供的需求所做的工作。可以与 --dry-run 和 --ignore-installed 结合使用以“解决”需求。当 - 用作文件名时,它会写入 stdout。写入 stdout 时,请结合 --quiet 选项,以避免将 pip 日志记录输出与 JSON 输出混淆。
--不清洗
不要清理构建目录。
-i, --index-url <url>
Python 包索引的基 URL(默认 https://pypi.org/simple)。这应该指向符合 PEP 503(简单存储库 API)的存储库或以相同格式布局的本地目录。
--extra-index-url <url>
除了 --index-url 之外,还要使用的包索引的额外 URL。应遵循与 --index-url 相同的规则。
--无索引
忽略包索引(只查看 --find-links URL)。
-f, --find-links <url>
如果是 html 文件的 URL 或路径,则解析指向存档的链接,例如 sdist (.tar.gz) 或 wheel (.whl) 文件。如果本地路径或 file:// URL 是目录,则在目录列表中查找存档。不支持指向 VCS 项目 URL 的链接。
例子
使用需求说明符从 PyPI 安装及其依赖项SomePackage
python -m pip install SomePackage # latest versionpython -m pip install 'SomePackage==1.0.4' # specific versionpython -m pip install 'SomePackage>=1.0.4' # minimum version
py -m pip install SomePackage # latest versionpy -m pip install "SomePackage==1.0.4" # specific versionpy -m pip install "SomePackage>=1.0.4" # minimum version
安装文件中指定的要求列表。请参阅要求文件。
python -m pip install -r requirements.txt
py -m pip install -r requirements.txt
从 PyPI 将已安装的升级到最新版本。SomePackage
python -m pip install --upgrade SomePackage
在“可编辑”模式下安装本地项目。请参阅“可编辑安装”部分。
python -m pip install -e . # project in current directorypython -m pip install -e path/to/project # project in another directory
从 VCS 安装项目
python -m pip install 'SomeProject@git+https://git.repo/some_pkg.git@1.3.1'
在“可编辑”模式下从 VCS 安装项目。请参阅有关 VCS 支持和可编辑安装的部分。
python -m pip install -e 'git+https://git.repo/some_pkg.git#egg=SomePackage' # from gitpython -m pip install -e 'hg+https://hg.repo/some_pkg.git#egg=SomePackage' # from mercurialpython -m pip install -e 'svn+svn://svn.repo/some_pkg/trunk/#egg=SomePackage' # from svnpython -m pip install -e 'git+https://git.repo/some_pkg.git@feature#egg=SomePackage' # from 'feature' branchpython -m pip install -e 'git+https://git.repo/some_repo.git#egg=subdir&subdirectory=subdir_path' # install a python package from a repo subdirectory
安装带有附加项的软件包,即可选依赖项 (规格)。
python -m pip install 'SomePackage[PDF]'python -m pip install 'SomePackage[PDF] @ git+https://git.repo/SomePackage@main#subdirectory=subdir_path'python -m pip install '.[PDF]' # project in current directorypython -m pip install 'SomePackage[PDF]==3.0'python -m pip install 'SomePackage[PDF,EPUB]' # multiple extras
安装特定的源存档文件。
python -m pip install './downloads/SomePackage-1.0.4.tar.gz'python -m pip install 'http://my.package.repo/SomePackage-1.0.4.zip'
根据直接引用安装特定的源存档文件 (规格)。
python -m pip install 'SomeProject@http://my.package.repo/SomeProject-1.2.3-py33-none-any.whl'python -m pip install 'SomeProject @ http://my.package.repo/SomeProject-1.2.3-py33-none-any.whl'python -m pip install 'SomeProject@http://my.package.repo/1.2.3.tar.gz'
从备用软件包存储库安装。
从其他索引安装,而不是 PyPI
python -m pip install --index-url http://my.package.repo/simple/ SomePackage
从包含存档的本地平面目录安装(并且不要扫描索引):
python -m pip install --no-index --find-links=file:///local/dir/ SomePackage python -m pip install --no-index --find-links=/local/dir/ SomePackage python -m pip install --no-index --find-links=relative/dir/ SomePackage
在安装过程中搜索除 PyPI 之外的其他索引
⚠警告
使用此选项搜索不在 main 中的包 存储库(例如私有包)是不安全的,根据安全性 称为依赖关系混淆的漏洞: 攻击者可以通过以下方式在公共存储库上声明包: 将确保它在私有包中被选中。
python -m pip install --extra-index-url http://my.package.repo/simple SomePackage
查找预发布版本和开发版本以及稳定版本。默认情况下,pip 只查找稳定版本。
python -m pip install --pre SomePackage
从源代码安装软件包。
不要使用任何二进制包
python -m pip install SomePackage1 SomePackage2 --no-binary :all:
指定要从源代码安装:SomePackage1
python -m pip install SomePackage1 SomePackage2 --no-binary SomePackage1
文章声明:以上内容(如有图片或视频在内)除非注明,否则均为腾龙猫勺儿原创文章,转载或复制请以超链接形式并注明出处。
本文作者:猫勺本文链接:https://www.jo6.cn/post/56.html