Pip不再支持Python 2

2021-01-24 10:21:47

删除对使用早于20.0的pipversion创建的旧式Wheel缓存条目的支持。 (#7502)

删除对VCS伪URL可编辑要求的支持。从20.0版开始,它发出了弃用警告。 (#7554)

删除仅用于可编辑的VCS要求且存在正确性问题的VCS导出功能。 (#9338)

新的解析器:当车轮包含不一致的元数据时显示的错误消息通过同时包含文件名和内部元数据中的值而变得更有帮助。 (#9186)

修复使pip wheel执行VCS导出而不是针对可编辑要求的VCS克隆的回归。这违反了需要VCS信息才能正确构建的VCS要求。 (#9273)

现在,pip wheel会验证内置的转轮是否包含有效的元数据,并且可以通过后续的pip安装来安装。可以使用--no-verify禁用此功能。 (#9206)

当VCS在stderr上输出大量数据时,修复了挂起的VCS子流程调用。恢复了VCS错误的日志记录,该错误在pip20.2中被意外删除。 (#8876)

当现有的不兼容性无法应用于回溯状态时,修复错误。 (#9180)

新的解析器:丢弃错误的分发,而不是直接退出。此实现取自20.2.2,此修复程序始终使解析器懒惰地遍历索引中的候选对象,以避免下载我们不需要的候选对象。 (#9203)

新的解析器:如果源分发无法生成元数据,则丢弃它,而不是直接退出。此实现取自20.2.2,其修复程序始终使解析器懒惰地遍历索引中的候选对象,以避免下载我们不需要的候选对象。 (#9246)

还原“跳过候选者不提供有效的元数据”,因为这会使pip急于从包索引中下载。 (#9264)

新的解析器:首先解析直接和固定(==或===)需求,以提高解析器性能。 (#9185)

新的解析器:在解决过程中,每个包的“已满足要求”日志仅打印一次。 (#9117)

修复了从URLsin --help中删除身份验证信息的逻辑时,将给出字符串列表而不是单个字符串的逻辑。 (#9191)

新的解析器:正确实现PEP592。不要从索引返回被选中的版本,除非版本范围只能由被选中的候选者满足。 (#9203) 新的解析程序:make约束也适用于带有附加组件的程序包变体,因此解析程序正确地避免了对其的回溯。 (#9232) 新的解析器:如果候选人无法从源中提供元数据,或者提供的元数据不一致,则放弃候选人,而不是直接退出。 (#9246) 更新文档以反映在Python 2环境中,默认情况下pip仍在使用旧式解析器。 (#9269) --build-dir选项已恢复为无操作,以简化仍在使用它的工具的过渡。 (#9193) 添加对PEP 600的支持:便携式Linux内置发行版的未来“ manylinux”平台标签。 (#9077) 新的解析器:返工回溯和状态管理,以避免陷入无限循环。 (#9011)

新的解析程序:如果包装轮在其文件名和元数据中使用了不同的版本规范化逻辑,请使用packages.version检查版本是否相等,以免出现极端情况。 (#9083)

新的解析器:仅在冲突错误消息中显示每个需求一次,以减少混乱。 (#9101)

修复使pip wheel在wheel目录中生成可编辑要求的zip文件的回归。 (#9122)

pip Frozen将在以后的版本中停止过滤pip Frozen输出中的pip,setuptools,distribute和wheel包。为保持以前的行为,用户应使用新的--exclude选项。 (#4256)

将--exclude选项添加到pip冻结和pip list命令,以从输出中显式排除软件包。 (#4256)

将选项--format添加到pip缓存的子命令列表中,并选择abspath以输出wheel文件的完整路径。 (#8355)

减少setup.py安装弃用警告的噪音。仅当setup.py安装成功且setup.py bdist_wheel失败时,我们才发出警告,这两种情况都与该弃用无关。 (#8752)

快速下载功能与pip wheel和pip下载一起使用时,请检查下载目录中现有的转轮,以免获取元数据。 (#8804)

当安装的git URL引用了git clone之后在本地不可用的提交时,请尝试从远程获取它。 (#8815)

在索引包中缓存包列表,以确保它们在pip命令会话期间保持稳定。当在命令会话期间多次访问索引页面时,这也会提高性能。 (#8905)

将--extra-index-url从需求文件正确地传播到会话身份验证,以便密钥环身份验证可以按预期工作。 (#8103)

允许通过配置文件和环境变量指定详细程度和安静级别。以前,当通过CLI从中读取这些选项时,可以将其指定为布尔值。 (#8578)

当aPOSIX环境未正确配置文件系统编码时,仅在Python 2上将Windows路径转换为unicode以避免回归。 (#8658)

使用新的解析器使行为与旧版解析器相同时,请在退出pip下载之前列出下载的发行版。 (#8696)

新的解析器:在约束文件中拾取哈希声明,然后使用它们过滤可用的分布。 (#8792)

当新的解析器用于pip下载或pip wheel时,请避免通过解析工件污染目标目录。 (#8827)

新的解析器:如果程序包在用户规范中使用--hash选项不同多次出现,则应仅允许所有规范中都存在的散列。 (#8839)

在新的解析器逻辑中正确搜索已安装的发行版,以免丢失软件包(例如,系统范围的软件包中的virtualenv软件包)(#8963)

遇到带有editable = True的direct_url.json元数据文件时,不要失败。将其呈现为不可编辑的文件:// URL,直到标准化和支持现代可编辑的安装为止。 (#8996)

修复开发者说明以明确声明不应删除vendor.txt.pip debug命令是必需的。

新的解析器:当首选安装的候选者并认为足够好时,避免访问索引。 (#8023)

在索引包中缓存包列表,以确保它们在pip命令会话期间保持稳定。当在命令会话期间多次访问索引页面时,这也会提高性能。 (#8905)

新的解析器:在约束文件中拾取哈希声明,然后使用它们过滤可用的分布。 (#8792)

新的解析器:如果程序包在用户规范中使用--hash选项不同多次出现,则应仅允许所有规范中都存在的散列。 (#8839)

减少setup.py安装弃用警告的噪音。仅当setup.py安装成功且setup.py bdist_wheel失败时,我们才发出警告,这两种情况都与该弃用无关。 (#8752)

仅尝试使用一次密钥环,如果失败,请不要再尝试。这样可以防止在用户无法解锁或不希望使用密钥环时向用户发送多个密钥环解锁提示。 (#8090)

修复回归问题,即在使用system-site-packageson配置虚拟环境时,无法正确找到系统站点包中的分布。 (#8695)

禁用范围请求的缓存,这会导致点子尝试使用快速精简功能获取元数据时轮子损坏。 (#8701,#8716)

2020 Resolver:正确处理约束中的标记评估,如果其标记与当前环境不匹配,则排除它们。 (#8724)

正确找到名称中带点(。)的已安装发行版,并在需要时将其卸载。 (#8645)

由于车轮中无效的.datafiles,在安装失败时跟踪更好的错误消息。 (#8654)

根据PEP 427使用UTF-8处理Python 2上的ZIP存档条目,可以按预期解析sonon-ASCII路径。 (#8684)

弃用-b /-build /-build-dir /-build-directory。如果在解析过程中需要构建同一发行版的不同版本,它的当前行为会造成混乱和破坏。使用TMPDIR / TEMP / TMP环境变量(可能与--no-clean结合使用)可覆盖已知用例。 (#8372)

将pip的新解析器移动到Beta中,删除--unstable-feature = resolver标志,然后启用--use-feature = 2020-resolver标志。当新的解析器收到不兼容的指令时,它会变得更加严格且更加一致,并且减少了对某些约束文件的支持,因此某些解决方法和工作流程可能会中断。有关如何测试和迁移以及如何报告问题的更多详细信息,请参见20.3(2020)中对pip依赖项解析器的更改。维护人员准备在10月发布pip 20.3,默认情况下启用新的解析程序。 (#6536)

在pip config中添加一个子命令debug,以列出可用的配置源以及其中定义的键-值对。 (#6741)

如果程序包URL是vcs或具有无效方案的存档URL,则发出警告(#8128) 允许新的解析器通过使用HTTP范围请求懒惰地下载来获取依赖项信息。 要启用此功能,请使用--use-feature = fast-deps调用pip。 (#8588) pip运行的VCS命令作为子进程不再合并stdout和stderr,从而通过后续命令改进了输出解析。 (#7968) 正确处理轮子中的非ASCII入口点声明,以便可以将其安装在Windows上。 (#8342) 现在,.data目录中的转轮提供的标题已正确安装到用户提供的位置(例如--prefix),而不是在其中运行virtualenvironment pip。(#8521) 需求文件中支持的选项列表是从事实来源中提取的,而不是手动维护的。 (#7908) 如果密钥环后端未返回一个密码,则提示用户输入密码(#7998)

恢复本地目录的构建,恢复20.1之前版本的复制到临时目录的行为。 (#7555) 避免在未构建车轮时出现有关未安装车轮套件的不必要消息。 此外,请澄清该消息。 (#8178) 在滚轮安装期间正确设置对元数据文件的权限,以允许非特权用户从系统站点程序包读取。 (#8139) 从AUTHORS.txt中删除电子邮件,以防止使用垃圾邮件,并且仅在发布时填充AUTHORS.txt中的名称(#5979) 现在已完成本地目录的构建,而不是包含目录树副本的临时位置。 (#7555) pip现在实现了PEP 610,因此在存在根据Direct URL要求安装的发行版时,pip冻结具有更好的保真度。 (#609) 当嵌套在另一个VCS存储库中时,请正确冻结VCS可编辑程序包。 (#3988)

在记录有关已安装文件(RECORD)和安装程序(INSTALLER)的元数据时,使用更好的机制来处理临时文件。 (#7699) $ TMPDIR位于源目录中时,请防止使用pip wheel进行无限递归。 (#7872) 强调由于缺少身份验证和加密,使用git,git + git和git + http的VCS URL是不安全的(#1983) 在程序中使用pip的示例中明确冻结命令的用法(#7008) 从pip删除车轮标签计算,并使用Packaging.tags。 与以前的发行版相比,这应提供更多订购更好的标签。 (#6908) pip> = 20滚轮缓存与先前版本不兼容。 在21.0版之前,pip将继续利用现有的旧版缓存项。 (#7296) 在CPython 3.x上将文字“ abi3”用于wheel标签,以与仅为此平台定义的PEP 384对齐。 (#7327)

删除特定于解释器的主要版本标签,例如cp3-none-anyfrom考虑。没有严格记录此行为,尤其是此标记没有用。任何有用例的人都可能因pypa / packaging而产生问题。 (#7355)

不再支持git + git @形式的VCS要求,并将在第21.0点中删除。切换到git + https://或git + ssh://。 git + git://也可以,但是不鼓励使用,因为它不安全。 (#7543)

默认情况下,当mainsite-packages目录不可写并且启用了用户站点包时,执行用户安装(好像已通过--user一样)。 (#1668)

根据Git要求构建的缓存轮被认为是不可变的,因为它们指向提交哈希。 (#6640)

点胶轮在本地构建的快取轮,与pip安装的功能匹配。这在安装前使用pip wheel进行构建的工作流中尤其有帮助。希望原始行为的用户可以使用pip wheel --no-cache-dir。 (#6852)

建议使用更强大的命令来升级pip本身,以避免在当前pip命令不可用作pip时引起混淆。 (#7376)

定义所有旧的pip控制台脚本入口点,以防止在过时的包装器脚本中导入问题。 (#7498)

现在,pip wheel的构建步骤首先将所有轮子都构建到缓存中,然后立即将它们全部复制到wheel目录中。在将它们构建到临时目录之前,将它们一个一个地移动到wheel目录中。 (#7517)

在路径选项,配置和环境变量中,将〜前缀扩展到用户目录。当前不支持可能为URL或path的值,以避免产生歧义:

在pep517构建错误之后,请勿尝试干净运行setup.py,因为在这种情况下setup.py可能不存在。 (#6642)

确保pip wheel永远不会输出带有apython实现标签的纯python wheel。通过使用每个实现的转轮缓存,而不是使用名称中带有实现标记的纯pythonwheels缓存,可以更好地解决#3025的问题。 (#7296)

当在requirements.txt(#7340)中使用--build-option,--global-option和--install-option中的任何一个时,修复警告消息中的错字

当无法写入时,有效禁用转轮缓存,例如http缓存。 (#7488)

删除针对指向SVN存储库的未前缀URL要求的未记录的支持。依靠此功能的用户可以通过在URL前面加上svn +(向后兼容)来获得原始行为。 (#7037)

当给--no-binary或--only-binary一个以-开头的参数时,打印更好的错误消息。 (#3191) 实现manylinux2014平台标签支持。 manylinux2014是manylinux2010的后继产品。 它允许精心编译的二进制车轮安装在兼容的Linux平台上。 在PEP599中可以找到manylinux2014平台标签的定义。 (#7102) 如果任何存档包含将放置在提取位置之外的文件,则中止安装。 (#3907) pip的CLI完成代码如果被中断,将不再显示“回溯”。 (#3942) 修复需求行解析器,以使用指向存档文件的URL正确处理PEP 440需求。 (#6202) pip-wheel-metadata目录在两次pip调用之间不需要保持不变,可以使用临时目录代替当前的setup.py目录。 (#6213) 切换到新的distlib wheel脚本模板。 这在功能上应等同于最终用户。 (#6763)

在不提供SOABI(#6885)的平台上,错误地将‘m’标志错误地附加到了Python 3.8中的ABI标签上 在与版本控制系统(aka VCS)命令调用相关的日志消息中隐藏诸如密码之类的安全敏感字符串。 (#6890) 通过flit install --symlink之类的工具正确卸载virtualenv中安装的符号链接。 (#6892) 如果无法升级pip,请不要在Windows上使用pip.exe安装失败。 (#6924) 修复了sys.stdin设置为None(例如在AWS Lambda上)时的崩溃。 (#7118,#7119) 在不提供SOABI(#6885)的平台上,错误地将‘m’标志错误地附加到了Python 3.8中的ABI标签上 改进弃用消息,以包括将在其中删除功能的版本。 (#6549)

尊重文件是否已从简单的存储库中标记为“已粘贴”(有关详细信息,请参阅PEP 592)。 (#6633) 在选择要安装的候选对象时,首选具有与用户提供的哈希值中的一个哈希值匹配的候选对象。 (#5874) 添加一个新的命令pip debug,可以显示例如 当前Python的兼容标签列表。 (#6638) 如果设置了PIP_IS_CI环境变量,请向Warehouse报告pip正在CI下运行。 (#5499) 完成构建后,记录.whl文件的最终文件名和SHA256。 (#5908) 如果发现候选车轮链接不兼容,请在日志消息说明中包含车轮标签。 (#6121) 通过setuptools填充程序调用setup.py时,将sys.argv [0]设置为基础setup.py,以便setuptools认为路径不是-c。 (#1890)

使“ ascii”进度条真正是“ ascii”而不是Unicode。 (#5671) 当在全局环境中指示前缀并且使用--target时,防止DistutilsOptionError。 (#6008) 当pip交互运行时,将Subversion的行为扩展到Subversion 1.8+。 (#6386) 防止pip安装< url> 如果恶意服务器发送Content-Disposition头文件名包含../或.. \\的文件,则禁止目录遍历。 (#6413) 如果无法通过冻结冻结生成特定分发的需求字符串,请在日志消息中包含更多详细信息。 (#6513) 在某些情况下,读取无效的需求文件时,将行号和文件位置添加到错误消息中。 (#6527) 将pyproject.toml处理恢复为pip 19.0.3的处理方式,以防止在以可编辑模式安装时需要添加--no-use-pep517。 (#6434)

修复导致pypiserver链接中引用@的回归,这会干扰从VCS URL解析修订字符串。 (#6440) 在pip的User-Agent字符串中是否包括pip正在CI下运行。 (#5499) 现在可以使用PIP_USER_AGENT_USER_DATA环境变量将自定义(JSON编码)字符串添加到pip的User-Agent中。 (#5549) 为了保持一致性,传递--no-cache-dir不再影响是否将构建wheel。 在这种情况下,将使用一个临时目录。 (#5749) 现在在PEP 517构建中使用--build-options会失败,并显示错误,而不是默默地忽略该选项。 (#6305) 如果有人尝试使用--editable模式安装pyproject.toml-style(PEP 517)源树,则会出现错误消息,并出错。 (#6314) 现在下载软件包时,ETA和平均速度现在每秒仅更新一次,以提高可读性。 (#6319)

pip将VCS命令中的stdout和stderr作为子进程(例如git,hg等)运行,不再污染pip的stdout。 (#1219)

如果当前安装的版本稳定,请进行pip的自我版本检查,避免建议升级到预发行版本。 (#5175)

修复了从没有URL的依赖项中的URL安装需求时崩溃的问题。 (#5889)

改善文件URI的处理:正确处理file:// localhost /…,并且不要尝试在Unix上使用UNC路径。 (#5892)

使用无效的编码修复utils.encoding.auto_decode()LookupError。在Little Endian上解码Big​​ Endian BOMbyte字符串时,utils.encoding.auto_decode()损坏,反之亦然。 (#6054)

在子流程调用不需要微调器之后,微调器不再显示完成消息。在成功完成对Git的某些子过程调用之后,它也不再错误地报告错误。 (#6312)

修正存在pyproject.toml但不需要PEP 517时在安装过程中对可编辑模式的处理

......