看了好多帖子说 “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 环境。