gpt4 book ai didi

python - 是否有一种标准方法来声明不支持旧的 python 版本?

转载 作者:太空狗 更新时间:2023-10-29 21:31:29 25 4
gpt4 key购买 nike

我想正式放弃对我维护的程序的 python 2 支持,并充分利用 python 3 的功能。我不想让一个程序或多或少在 python 2 下工作但在极端情况下因奇怪的行为而失败,我想用一个明确的“请改用 python 3”错误消息正式中断我的 python 2 程序。对于不受支持的 python 版本,最合理的错误失败方法是什么?

例如,我想在 python 2(至少是顶级包)中导入代码以触发错误,并让我的 distutils setup.py 脚本在尝试为 python 2 安装或构建它时出错(即使通过 python 3 调用,如 python3 setup.py sdist_dsc --with-python2)。我还想包括任何相关的元数据以正式声明我支持哪些 python 版本。 PEP 345 中有一个 Requires-Python 字段但如果我不使用 distutils2,我认为这并不重要。

最佳答案

从 setuptools 24.2.0 (2016-07-20) 和 pip 9.0.0 (2016-11-02) 开始,setup()python_requires 参数在 setup.py 中将告诉打包工具不要安装与说明符不匹配的包。例如,仅支持 Python 3.6+:

setup(
...
python_requires=">=3.6",
...
)

仅支持 Python 2.7 和 3.4+:

setup(
...
python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
...
)

鉴于内置支持,不应再使用此答案中的以下方法。


为了防止导入,把它放在模块的顶部:

import sys

if sys.version_info[0] < 3:
raise ImportError('Python < 3 is unsupported.')

要防止安装,请将其放在 setup.py 的顶部:

import sys

if sys.version_info[0] < 3:
sys.exit('Python < 3 is unsupported.')

如果您使用与 Python 2 不兼容的语法,这也会在检查之前失败,因为模块将在运行前被解析。检测到支持“不支持 Python 2”可能有点矫枉过正。

但我还没有真正看到这在实践中完成。大多数维护者只是说出支持的内容,而不会费心去检查。

关于python - 是否有一种标准方法来声明不支持旧的 python 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26437467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com