在学习 fast.ai 课程( 2020年)时,课程配套代码的开头有一句( Jupyter Notebook 环境 ):!pip install -Uqq fastbook
,始终不明白这里的 -Uqq
是什么意思呢?
到网上查找,大部分文章里都提到 -U
等效于 --upgrade
,也就是说,pip install -U
与 pip install --upgrade
相同,将对应的安装包升级至最新版本;但是没有看到对 -Uqq
的介绍。最后在 stackoverflow 的一个问答里找到了答案,-q
等效于 --quiet
,具有减少输出的效果。-q
是可选项,可以重复三次使用,相应输出 WARNING(警告), ERROR(报错), CRITICAL(严重、紧急)记录,具体为:
-q
:对应输出结果只有 WARNING(警告), ERROR(报错), CRITICAL(紧急)记录
-qq
:对应输出结果只有 ERROR(报错), CRITICAL(紧急)记录
-qqq
:对应输出结果只有 CRITICAL(紧急)记录
比如我在运行 !pip install -Uqq fastbook
时,结果框就出现了 ERROR (报错)记录,其中一部分显示如下:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
kornia 0.5.5 requires numpy<=1.19, but you have numpy 1.19.5 which is incompatible.
(略……)
那么,如果不加 -q
,结果会是怎么样呢?-Uq
和 -Uqqq
的输出效果又如何呢?
你是不是和我有相同的好奇?哈哈,那咱们就运行一下这几个命令,一起来看看结果:
1.在 Jupyter Notebook 中重启 kernel 后运行 !pip install -U fastbook
,一看结果,瞬间就明白了为什么要用 -q
,因为:结果实在太多了!详细记录了整个安装过程,包括哪个安装包满足安装条件,正在下载安装(进度条),再加上ERROR(报错)、WARNING(警告)记录等等。不过,最后有一句输出Successfully installed……
会显示这一次安装了哪些库(不仅有当前安装的库,还有其调用的库,也就是依赖库),我觉得这一条信息还挺有用的。
2.重启之后运行!pip install -Uq fastbook
,输出的结果在 ERROR(报错)记录的基础上,增加了一条 WARNING(警告)信息。
WARNING: Running pip as root will break packages and permissions. You should install packages reliably by using venv: https://pip.pypa.io/warnings/venv
3.重启之后运行 !pip install -Uqqq fastbook
,输出的结果仍然是 ERROR (报错)记录,和 !pip install -Uqq fastbook
结果相同,这让我有点困惑。难道这里的 ERROR (报错)记录也是 CRITICAL(严重、紧急)记录?欢迎指教,谢谢!
参考:
1.-U
等效于 --upgrade
的介绍:https://pip.pypa.io/en/latest/cli/pip_install/
2.-q
等效于 --quiet
的介绍:https://pip.pypa.io/en/stable/cli/pip/
3.pip install -Uqq的问答: https://stackoverflow.com/questions/64277506/pip-install-options-unclear