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.
答案 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
中还有其他类似的用例。