pipenv 在安装包时不显示进度条

pipenv doesn't show progress bar when installing packages

当我尝试使用 pipenv 安装包时,没有显示进度条。这对我来说非常重要,因为我的数据连接有限,而且我需要提前知道我正在下载的包的大小。 这是我在 pipenv

中获得的示例
pipenv install spacy
Installing spacy...
[   =] Installing spacy...  

这是我用普通 pip 安装包时得到的结果

pip install spacy
Collecting spacy
  Downloading spacy-3.0.1-cp39-cp39-win_amd64.whl (11.4 MB)
     |████████████                    | 4.3 MB 2.2 MB/s eta 0:00:04

有没有办法用pipenv显示进度条? tutorials 之类的其他人无需额外代码即可显示进度条。可能是在新版本中它不是显示进度条的默认设置?

我确实有某种方法可以判断包的大小,我只是执行 pip install,检查大小,然后立即中止以便我可以继续pipenv 安装

pipenv 目前无法显示与 pip 相同的下载 进度条。之前曾在 2018 年 7 月提出请求,此处:pipenv couldn't display progress bar when it downloads package,该功能请求仍然 开放。

I mean, sometimes when we want to install a big pypi package like pytorch (the pytorch's .whl package size is 400+Mb), and one's internet speed is slow (say 400Kb/s). In this situation, we need to wait about 17 minutes to finish downloading. During this time, the user cannot add options to pipenv to display package downloading speed or complete rate.

What I want is something like wget and pip's progress-bar function.

Pull requests are welcome, I agree that would be a great feature

所以,遗憾的是,现在没有办法拥有与 pip 相同的功能,或者至少没有办法模拟 pip 的 --progress-bar 选项。随时提交该线程并订阅该问题以获取更新,以防它被实施。

Everyone else on things like tutorials can show the progress bar without additional code. Might it be that in new versions it's not a default setting showing progress bar?

我认为你混淆了 pip 的 下载 进度条和 pipenv 的 spinner 安装 进度酒吧:

$ pipenv install pytest
Installing pytest... 
⠏ Installing pytest...
...
Updated Pipfile.lock (34070a)!
Installing dependencies from Pipfile.lock (34070a)...
     ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 1/1 —

pipenv install 除了安装软件包之外还有很多其他的事情,比如生成一个锁定文件、更新你的 Pipfile 和维护你的虚拟环境。 spinner (⠏ Installing pytest...) 将所有这些操作考虑在内,通常需要一段时间才能完成。最后的 installation 栏仅表示“将文件从临时目录移动到您的虚拟环境”,并且不提供任何信息下载大小和时间。虽然他们两个都没有解决你的问题。

This is very important for me since I have limited data connection and I need to know in advance the size of the packages I'm downloading.

如果您从 PyPi (by default), a workaround is to first go to the "Download files" section of the package's PyPi page, and check the download file sizes. Here's the one for spacy: https://pypi.org/project/spacy/#files 安装软件包。

pip install 实际上首先做的是下载那些相同的文件。例如,spacy-3.0.1-*.whl 的文件大小约为 11~12Mb,与“spacy-3.0.1-cp39-cp39-win_amd64.whl (11.4 MB)”的文件大小相匹配。

另一种解决方法是向 JSON API 发出 GET 请求以获取该软件包:https://pypi.org/pypi/spacy/json,然后查找 releases > <version> > size.

$ curl https://pypi.org/pypi/spacy/json > spacy.json
$ python3
>>> import json
>>> with open('spacy.json') as f:
...   data = json.load(f)
... 
>>> sizes = [v['size'] for v in data['releases']['3.0.1']]
>>> sizes
[12444769, 12750738, 11605145, 12283655, 12727469, 11606585, 12370380, 12851086, 11760155, 12176093, 12500325, 11395223, 7016311

这将使您获得相同的 11~12Mb 估计值。 (我没有在脚本中花很多心思,所以需要 很多 的工作才能将它变成像 pip-check-size <package> 之类的可重用实用程序。它还需要你事先知道版本)。

这两种解决方法可能比您现在正在做的更麻烦:

I just do the pip install, check the size, and then immediately abort so that I can go for a pipenv install