pipenv在安装后会占用大量时间并下载大量数据的功能是什么?

问题描述 投票:2回答:2

[在使用Python版本遇到一些噩梦之后,我尝试了pyenvpipenv。但是,当将pygameseabornpipenv一起安装时,我注意到安装是在几秒钟内完成的,并且Installation Succeeded消息将立即出现。然后,显示了一些锁定消息,并且等待了几分钟,显示了显示为Locking的加载图标,等待时间很长。在这段时间里,有大量的数据正在下载。如下图所示。正在下载什么数据?为什么有必要?可以禁用吗?我现在不慎使用pipenv

enter image description here

python ubuntu-16.04 pipenv pyenv
2个回答
1
投票

听起来与https://github.com/pypa/pipenv/issues/3827有关:

pipenv锁会下载已安装软件包及其依赖项的所有可用工件。即使工件URL在片段中包含哈希,它也会这样做以计算其哈希。对于某些较大的软件包(例如scipy),它们具有较大的依赖性并且每个版本都有许多工件,此行为可能导致某些用户的延迟过长(893MB与50MB下载)。

此错误报告本身提供了针对pipenv源代码的补丁形式的解决方法。如果可能的话,它从工件URL中获取哈希,而不是始终重新计算哈希,这似乎可以大大缩短锁定时间。

链接至解决方法:https://github.com/pypa/pipenv/blob/4c003521052d3b607be5abedf989744a5c172bda/pipenv/patched/piptools/repositories/pypi.py#L60-L71


1
投票

因为pipenv的开发人员很奇怪。是的,他们很奇怪。

简而言之,pipenv正在尝试下载每个依赖项以计算哈希。因此它可以生成带有哈希值的锁定文件。好了,很容易理解,这对于确保一致的环境很重要。

但是问题是,过去,这是唯一的方法,因为Pypi没有为软件包提供哈希。现在,它很可笑,因为Pypi确实为每个包提供了哈希值。无需下载整个程序包即可获取主题标签。至少如果您可以直接从元数据中获取主题标签。

出于未知的原因,pipenv的开发人员只是不想对此进行任何更改。

© www.soinside.com 2019 - 2024. All rights reserved.