use*_*610 5 python backwards-compatibility pycharm
类似于__author__或__version__顶层模块的变量,有指定支持Python版本的Python源文件中的任何约定?
我的用例是一个项目,其中包含一些需要与Python 2.4兼容的脚本.我想用一些普遍可识别的方式注意它们中的事实.
我不是在询问如何在执行期间要求最小的Python版本.我的问题是开发人员可能会意外地使用与此特定脚本需要支持的python版本不兼容的功能.PyCharm可以警告Python不兼容性.如果能够获取此注释并在每个文件的基础上配置警告,那将会很棒.
据我所知,没有在 Python 源文件中指定受支持的 Python 版本的约定。如果您正在创建一个 Python 库并通过 PyPI(和 )分发它pip,您可以添加包元数据来说明它与哪些版本的 Python 兼容。
例如,对于我的scandir模块,您可以在 PyPI 上看到它(当前)标记为与 Python 2.6、2.7 和 3.2-3.5 兼容。该元数据位于classifiers包的setup.py的关键字中:
setup(
name='scandir',
# ...
classifiers=[
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.2',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
# ...
]
)
Run Code Online (Sandbox Code Playgroud)
如果您不将其作为 PyPI 包发布,一种替代方法可能是在旧版本的 Python 上导入该模块时生成警告,指出此版本的 Python 不支持 FizzBuzz 功能。
import sys, warnings
if sys.version_info < (3, 5):
warnings.warn('The FizzBuzz feature is only supported on Python 3.5+')
Run Code Online (Sandbox Code Playgroud)
话虽如此,我个人只是保持简单:记录功能 X 仅在 Python 3.5+ 上受支持,然后如果有人尝试在旧版本上使用该功能,就让它失败吧。