【问题标题】:How to identify the Python interpreter version for an undocumented .py module?如何识别未记录的 .py 模块的 Python 解释器版本?
【发布时间】: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


【解决方案1】:

因为这只是一个文本文件,所以你无法自动找出它是用什么版本的 Python 编写的。而且我不知道是否有很大的动机将其添加​​到语言中,尤其是考虑到当您拥有 py3 与 py2 文件时(搜索打印、检查未来导入等)是多么明显。

但是,如果您查看的是 .pyc 文件,您就可以分辨出来。由于这些是由特定的解释器编译的,因此文件中通常有一个组件为所用的解释器提供十六进制值。

更多详情请看这里:Is there a way to know by which Python version the .pyc file was compiled?

【讨论】:

    猜你喜欢
    • 2013-12-11
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2013-09-03
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多