Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pipenv在安装后会做些什么呢?安装后会占用大量时间并下载大量数据?_Python_Ubuntu 16.04_Pipenv_Pyenv - Fatal编程技术网

Python pipenv在安装后会做些什么呢?安装后会占用大量时间并下载大量数据?

Python pipenv在安装后会做些什么呢?安装后会占用大量时间并下载大量数据?,python,ubuntu-16.04,pipenv,pyenv,Python,Ubuntu 16.04,Pipenv,Pyenv,在遇到一些Python版本的噩梦后,我尝试了pyenv和pipenv。但是当使用pipenv安装pygame和seaborn时,我注意到安装在几秒钟内发生,并且安装成功消息会立即出现。然后会显示一些锁定消息,等待时间长达几分钟,其中会显示一个加载图标,上面写着locking 在此期间,有大量数据被下载。下图所示。下载的数据是什么?为什么有必要?它可以被禁用吗?我现在很小心使用pipenv 这听起来与: pipenv lock下载已安装软件包及其依赖项的所有可用工件。它这样做是为了计算它们的散列,

在遇到一些Python版本的噩梦后,我尝试了
pyenv
pipenv
。但是当使用
pipenv
安装
pygame
seaborn
时,我注意到安装在几秒钟内发生,并且
安装成功
消息会立即出现。然后会显示一些锁定消息,等待时间长达几分钟,其中会显示一个加载图标,上面写着
locking

在此期间,有大量数据被下载。下图所示。下载的数据是什么?为什么有必要?它可以被禁用吗?我现在很小心使用
pipenv

这听起来与:

pipenv lock下载已安装软件包及其依赖项的所有可用工件。它这样做是为了计算它们的散列,即使工件url在片段中包含散列。对于某些大型软件包,例如scipy,每个版本都有很大的依赖项和许多工件,这种行为可能会导致一些用户出现不合理的长时间延迟(893MB与50MB下载)

pipenv源代码的补丁形式的解决方法在这个bug报告中给出。如果可能的话,它从工件URL获取哈希值,而不是总是重新计算它,这似乎大大缩短了锁定时间


链接到解决方法:

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

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

但问题是,在过去,这是唯一的方法,因为
Pypi
没有为包提供哈希。但就目前而言,这很可笑,因为
Pypi
确实为每个包提供了散列。不需要下载整个包来获取标签。至少如果您可以直接从元数据中获取hashtag


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

如果pipenv锁定在某个地方卡住了 做

$pipenv安装--跳过锁定
$pipenv锁

首先通过--skip lock跳过锁定部分 然后在以后有时间时手动执行锁定

它是有效的。

非母语人士问题:散列真的被称为“散列标签”吗?我以为这只是为了#注释。如果社区使用可信任链来存储包哈希(区块链),这个问题应该解决吗?@FelixDombek我认为Sraw在术语上可能不一致。如果你查看pypi文档,你会看到一个hashtag(或数字符号,或磅符号,或octothorp;它们都是相同的东西)作为下载url的一部分,标记url片段;在该片段中,使用键
md5
指定散列。有关url部分的更多信息,请查看。