【发布时间】:2015-08-15 21:55:18
【问题描述】:
除了手动查看源代码外,是否有一个已实施的程序解决方案来确定未记录的 .py 模块支持哪个版本的 Python 解释器?
$ python get_py_version my_module.py
'2.6 version module'
在 3.x 解释器中安装未记录的包后发现导入过程中有来自 2.x 解释器的 print 语句后出现问题
【问题讨论】:
-
不,看代码就差不多了。除非开发人员放入文档(文档字符串、cmets 或显式版本检查)。
-
只需运行模块测试套件 - 如果所有测试都通过,则解释器支持模块。如果这是没有任何测试的裸模块 - 你的猜测和我的一样好。据我所知,这项任务没有通用的解决方案。当然,您可以尝试使用 2to3 并手动准备模块,但问题仍然存在 - 如果没有测试套件,您将无法知道代码是否“有效”。任何代码。
-
@MartijnPieters 这是 Python 中缺少的功能,它很容易作为解释器的一部分来实现,以从模块语法中推断支持的版本
-
@ŁukaszR。没有测试套件,如果我在 2.x 解释器中安装 3.x 版本怎么办。我希望已经实现的程序解决方案可用于从模块源代码推断版本
-
询问编写模块的人。
标签: python module versioning interpreter cpython