代码之家  ›  专栏  ›  技术社区  ›  Eloff

如何从加载的模块重构python源代码(系统模块)?

  •  1
  • Eloff  · 技术社区  · 14 年前

    人们告诉我你不能,但我确信这在Python中是可能的。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Alex Martelli    14 年前

    可以使用 dis 标准库的模块:生成明确的人类可读源代码,而不是 来源,但是 来源。从煎蛋卷开始把鸡蛋放在一起有点难。

    Python2.3以前有一个反编译器(参见 here

        2
  •  0
  •   Ned Batchelder    14 年前

    一般来说,源代码可以在文件系统中找到,这些地方可以很容易地从系统模块.

    for name, mod in sys.modules.items():
        try:
            fname = mod.__file__
        except AttributeError:
            continue
        if fname.endswith(".pyc"):
            fname = fname[:-1]
        try:
            fcode = open(fname)
        except IOError:
            continue
        code = fcode.read()
        # .. do something with name and code