pip 安装

猫勺猫勺 03-13 126 阅读 0 评论

用法

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 有几个阶段:

  1. 确定基本要求。处理用户提供的参数 这里。

  2. 解析依赖关系。此处确定将安装的内容。

  3. 制造轮子。所有可以的依赖项都内置在轮子中。

  4. 安装软件包(并卸载任何正在升级/更换的内容)。

请注意,最好将安装的版本保持原样 除非指定。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


The End 微信扫一扫

文章声明:以上内容(如有图片或视频在内)除非注明,否则均为腾龙猫勺儿原创文章,转载或复制请以超链接形式并注明出处。

本文作者:猫勺本文链接:https://www.jo6.cn/post/56.html

上一篇 下一篇

相关阅读

发表评论

访客 访客
快捷回复: 表情:
评论列表 (暂无评论,126人围观)

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码