Python pip:强制执行进度条

Python pip:强制执行进度条,python,python-3.x,pip,pipe,tty,Python,Python 3.x,Pip,Pipe,Tty,使用pip下载Python包时,默认情况下会显示一个进度条。使用我可以选择不同的样式或完全关闭进度条。如果我对pip命令的输出进行管道传输,则此进度条将自动禁用。例如 python3 -m pip download --no-cache-dir scipy==1.1.0 # Progress bar python3 -m pip download --no-cache-dir scipy==1.1.0 | tee log # No progress bar (如果您依次

使用pip下载Python包时,默认情况下会显示一个进度条。使用我可以选择不同的样式或完全关闭进度条。如果我对pip命令的输出进行管道传输,则此进度条将自动禁用。例如

python3 -m pip download --no-cache-dir scipy==1.1.0            # Progress bar
python3 -m pip download --no-cache-dir scipy==1.1.0 | tee log  # No progress bar
(如果您依次运行这两个命令,请记住删除中间的下载文件)。我确信pip禁用了进度条,因为它检测到输出不是TTY。我寻求一种方法来忽略pip的这种聪明,并强迫它写出进度条。天真的猜测是提供
--progress bar
参数,例如

python3 -m pip download --no-cache-dir --progress-bar=on scipy==1.1.0 | tee log
但是,进度条的非TTY禁用会否定这一点

注意:
wget
也有类似的情况。在这里,可以使用

wget --progress=bar:force ...

进度条很奇怪。试着自己用python编写一个。通常需要使用回车符(
\r
)而不使用附带的换行符(
\n
),以便用更新的进度条文本覆盖现有行。如果pip就是这样做的,那么你的管道输出将有数百行之长,而大多数输出都是在进度条打印的不同时间进行的。我不知道如何强制执行进度条,但我怀疑您是否真的希望强制执行进度条,因为它是通过管道传送到某物的。@RagingRoosevelt我自己编写了几个进度条,我知道要点。事实上,我确实想强制进度条。当然,日志文件会很混乱,但屏幕上的输出会完好无损。唯一的方法是破解源代码并发送拉取请求。我已经提交了一个