目前无法使用 pipenv 显示与 pip 相同的 下载 进度条。早在 2018 年 7 月,这里就曾提出过要求:pipenv couldn't display progress bar when it downloads package,该功能要求仍然开放。
我的意思是,有时当我们想安装一个像 pytorch 这样的大 pypi 包时(pytorch 的 .whl 包大小为 400+Mb),而一个人的互联网速度很慢(比如 400Kb/s)。在这种情况下,我们需要等待大约 17 分钟才能完成下载。在此期间,用户无法向 pipenv 添加选项以显示包下载速度或完成率。
我想要的是类似 wget 和 pip 的进度条功能。
欢迎拉取请求,我同意这将是一个很棒的功能
因此,遗憾的是,现在没有办法拥有与 pip 相同的功能,或者至少无法模拟 pip 的 --progress-bar 选项。随意提出该线程并订阅该问题以获取更新,以防它被实施。
tutorials 之类的其他人无需额外代码即可显示进度条。可能是在新版本中它不是显示进度条的默认设置?
我认为你混淆了 pip 的 download 进度条和 pipenv 的 spinner 和 installation 进度条:
$ 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...) 将所有这些操作都考虑在内,通常需要一段时间才能完成。最后的 安装 栏只是表示“将文件从临时目录移动到您的虚拟环境”之类的内容,并且不提供任何信息下载大小和时间。虽然它们都不能解决你的问题。
这对我来说非常重要,因为我的数据连接有限,而且我需要提前知道我正在下载的包的大小。
如果您从PyPi(默认情况下)安装包,解决方法是首先转到包的 PyPi 页面的“下载文件”部分,并检查下载文件的大小。这是 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> 之类的可重用实用程序。它还需要你知道版本事先)。
这两种变通方法可能比您现在已经在做的更麻烦:
我只是进行 pip 安装,检查大小,然后立即中止,以便我可以进行 pipenv 安装