看了好多帖子说 “python -v 是包括库的版本号,而 python -V 才是版本号”,特意去搜了下官方文档,证实如上说法并不对,以下是详解:
来源:https://docs.python.org/3/using/cmdline.html#cmdoption-v
首先 python -V (大写)与 python --version 功能相同,将 python 版本打印并退出 python。
原话:“Print the Python version number and exit.”
实际运行图:

python -v (小写)是以一种特殊模式进入 python,该模式下每次有模块被初始化就会打印相应信息,展示载入的模块名或者内置模块。
原话:“Print a message each time a module is initialized, showing the place (filename or built-in module) from which it is loaded. ”
实际运行展示:
篇幅所限,截取部分显示。可以看到在运行完 python -v 之后,是进入了 python 环境中的,与直接进入 python 不同,多了很多载入模块的信息。此外当我尝试运行 import time 载入模块时,也出现了关于该模块的具体信息。最后当我用 exit() 命令退出 python 时,它将所有载入的模块清除再退出。
(base) PengfeideMacBook-Pro:~ ted$ python -v
import _frozen_importlib # frozen
import _imp # builtin
import '_thread' # <class '_frozen_importlib.BuiltinImporter'>
import '_warnings' # <class '_frozen_importlib.BuiltinImporter'>
# 篇幅所限,此处删掉诸多模块
import 'rlcompleter' # <_frozen_importlib_external.SourceFileLoader object at 0x105b35d10>
>>> import time
import 'time' # <class '_frozen_importlib.BuiltinImporter'>
>>> exit()
# clear builtins._
# clear sys.path
# 篇幅所限此处删掉诸多相似语句
# cleanup[3] wiping sys
# cleanup[3] wiping builtins
所以,python -v 并不是简单的展示版本和模块,而是以一种载入模块信息的形式启动 python 或进入 python 环境。
本文澄清了关于 `python -v` 和 `python -V` 的常见误解。实际上,`-V`(大写)与 `--version` 相同,仅输出 Python 版本并退出。而 `-v`(小写)则会在启动时详细打印每个初始化模块的信息,提供模块加载的详细视图。在 `-v` 模式下,即使执行 `import time` 等操作,也会显示相关模块的详细加载情况。
379

被折叠的 条评论
为什么被折叠?



