如何修补“python版本”命令?

2024-09-19 21:00:01 发布

您现在位置:Python中文网/ 问答频道 /正文

-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恢复正常


Tags: 模块installpip用户命令版本pypipackage
1条回答
网友
1楼 · 发布于 2024-09-19 21:00:01

我们可以查看解析位于^{} 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 ^{}

修改Py_GetVersion()的输出也是不可能的

因此,答案似乎是否定的,如果不重新编译整个解释器,这是不可能的

相关问题 更多 >