我应该在何时何地检查Python的最低版本?
这个问题告诉我如何检查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
中还有其他类似的用法示例。