何时/何地应该检查最小Python版本?

时间:2014-05-29 13:51:59

标签: python pip compatibility

This question告诉我如何检查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 个答案:

答案 0 :(得分:2)

兼容性检查的主要目的是在不兼容性导致问题之前,优先处理兼容性问题或优雅地退出解释。

我把它放在setup.py的顶部附近,或者是第一个属于你的脚本,它将被调用。最佳做法是不在__init__.py中包含代码(除非你正在制作一个MAJOR包,我会提出意见),但如果你已经有很多代码,那就没关系了。

我可以找到最快的参考点:旧Python 2.6 unittest module had a test for it near the top,当然,在模块docstring之后,导入和__all__

Another point of reference shows a compatibility check in an __init__.py,再次靠近顶部,虽然此处紧跟在文档字符串之后并导入sys,这是检查所必需的。在同一组库中__init__.py中还有其他类似的用例。