-v
/--version
标志用于打印出相应python
解释器的版本。
例如,如果python
是Python 3.7.9解释器的别名,则该标志将打印出以下内容:
$ python --version
Python3.7.9
可以创建一个Python模块,在安装monkey时为用户修补此命令吗?需要注意的是,这需要跨平台。这样做怎么样?
例如,假设我在PyPI上上传了my-package
。如果我安装了它,它将修改pyhton -v
/python --version
的行为。
$ python --version
Python3.7.9
$ pip install my-package
...
$ python --version
<some custom text>
优选在卸载时,-v
/--version
恢复正常。
我们可以查看initconfig.c
行1900上解析命令行参数(在本例中,针对CPython(的代码。
如果提供了--version
或-V
标志,则print_version
变为非零,从而触发行2051:上的条件
if (print_version) {
printf("Python %sn",
(print_version >= 2) ? Py_GetVersion() : PY_VERSION);
return _PyStatus_EXIT(0);
}
因此,所述模块将需要以某种方式修改PY_VERSION
的值或Py_GetVersion()
的输出。
改变PY_VERSION
是不可能的,因为它在patchlevel.h
中是硬编码的。
修改Py_GetVersion()
的输出也是不可能的,因为它使用PY_VERSION
。
因此,答案似乎是否定的,如果不重新编译整个解释器,这是不可能的。