我应该在何时何地检查Python的最低版本?

5 投票
1 回答
801 浏览
提问于 2025-04-18 07:57

这个问题告诉我如何检查Python的版本。对于我的包,我至少需要Python 3.3:

MIN_VERSION_INFO = 3, 3

import sys
if not sys.version_info >= MIN_VERSION_INFO:
    exit("Python {}.{}+ is required.".format(*MIN_VERSION_INFO))

但是这个检查应该在哪里/什么时候进行呢?

我想给通过pip(sdist和wheel)或python setup.py install安装的用户提供最清晰的错误信息。类似这样的:

$ pip -V
pip x.x.x from ... (Python 3.2)
$ pip install MyPackage
Python 3.3+ is required.

$ python -V
Python 3.2
$ python setup.py install
Python 3.3+ is required.

1 个回答

2

兼容性检查的主要目的是优雅地处理兼容性问题,或者在问题发生之前,优雅地退出并给出解释,这样就不会造成麻烦。

我建议把这个检查放在setup.py的顶部,或者放在你自己写的第一个会被调用的脚本里。最佳做法是不要在__init__.py里写代码(除非你在做一个非常重要的包,我个人认为),不过如果你已经在里面写了很多代码,那也没关系。

我能找到的最快的参考点是:旧版的Python 2.6的unittest模块在顶部就有一个测试,当然,这个测试是在模块的文档字符串、导入语句和__all__之后。

另一个参考点显示了在__init__.py中进行的兼容性检查,同样是在顶部,不过这里是在文档字符串和导入sys之后,后者是进行检查所必需的。在这个同一组库的__init__.py中还有其他类似的用法示例。

撰写回答