如何判断python模块是python 2还是python 3?

时间:2018-01-21 02:13:50

标签: python python-3.x

Python 2和Python 3有细微的差别,这意味着不可能看到python模块,并且当然知道,仅通过自动代码分析,它是否可以在python 2和python 3上完全相同。(对吧?那个似乎是Is it possible to check if python sourcecode was written only for one version (python 2 or python 3)

的答案

因此,我认为必须是开发人员可以注释文件以明确指示它与Python 2,Python 3或两者兼容的一些约定,以便这样做注释可以由开发人员阅读,自动检查等。

这个惯例是什么?

我没有看到不同的文件扩展名,例如.py2 vs .py3。我没有看到任何旨在充当元数据的全局变量声明。但是,除了代码和自述文件中的特殊注释之外,似乎必须存在。那是什么?

1 个答案:

答案 0 :(得分:6)

不幸的是,实际上并没有任何正式的方法来指定它。但是,广泛使用的常用方法是在分发的元数据中指定所需的Python版本。

您可能会在setup.py文件(或setup.cfg文件中看到一行,对于现代版本的setuptools),使用python_requires option语法声明PEP440。另请参阅PEP 345 - Metadata for Python Software Packages,特别是有关environment markersRequires-Python元数据的部分。使用这些标记将阻止pip下载/安装具有不正确的Python解释器版本的发行版。

对于较旧的软件包,通常只在文档或自述文件中提及,或使用trove classifiers。这通常列在PyPI和/或github登录页面上。