如何解决如何猴子修补“ python --version”命令?
-v
/ --version
标志用于打印相应的python
解释器的版本。
例如,如果python
是Python 3.7.9解释器的别名,则该标志将输出以下内容:
$ python --version
Python3.7.9
有人可以创建一个Python模块,在安装猴子时为用户修补此命令吗?需要注意的是,这需要跨平台。怎么会这样呢?
例如,假设我在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
line 1900上的解析命令行参数的代码(在此示例中,对于CPython)。
如果提供了--version
或-V
标志,则print_version
变为非零,从而触发line 2051上的条件:
if (print_version) {
printf("Python %s\n",(print_version >= 2) ? Py_GetVersion() : PY_VERSION);
return _PyStatus_EXIT(0);
}
因此,上述模块将需要以某种方式修改PY_VERSION
的值或Py_GetVersion()
的输出。
更改PY_VERSION
是不可能的,因为它是hard-coded in patchlevel.h
。
since it uses PY_VERSION
也无法修改Py_GetVersion()
的输出。
所以看来答案是否定的,如果不重新编译整个解释器,这是不可能的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。