加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 23:25:06 所属栏目:Python 来源:网络整理
导读:我想正式删除我维护的程序的 python 2支持,并充分利用python 3的功能.我没有让一个程序或多或少在python 2下运行但在极端情况下出现奇怪的行为,我想用一个明确的“请使用python 3而不是”错误消息正式破解我的python 2程序.对于不支持的python版本,出现错误
我想正式删除我维护的程序的 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.py中setup()的python_requires参数将告诉打包工具不要安装不包装匹配说明符.例如,仅支持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”可能有点过分.

但我实际上并没有在实践中看到这一点.大多数维护者只是说支持什么,不打扰检查.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读