【问题标题】:Combining module files in Python在 Python 中组合模块文件
【发布时间】:2009-07-09 13:59:06
【问题描述】:

有没有办法将 Python 文件放在一起,类似于 Java 中的 JAR?我需要一种打包 Python 类和函数集的方法,但与标准模块不同,我希望它位于一个文件中。

【问题讨论】:

    标签: python packaging


    【解决方案1】:

    在寻找相同问题的解决方案后,我最终编写了一个简单的工具,将多个 .py 文件合并为一个:PyBreeder

    它只适用于纯 Python 模块,并且可能需要一些试验和错误才能使模块的顺序正确,但是当您想要将具有某些依赖项的脚本部署为单个 .py 时,它非常方便。非常欢迎评论/补丁/批评!

    【讨论】:

    • 我使用 something similar 是因为它看起来很酷,但 PyBreeder 看起来不那么荒谬和骇人听闻。
    【解决方案2】:

    【讨论】:

    • 谢谢!我见过使用“鸡蛋”这个词,但我不知道它是什么。
    【解决方案3】:

    最简单的方法是使用zip。 Java 中的jar 文件是一个 zip 文件,其中包含一些元数据,例如清单;但是您不一定需要元数据——只要您将该 zipfile 放在 sys.path 上,Python 就可以从 zipfile 中导入,就像您对任何目录所做的那样。在 zipfile 中,您可以拥有源代码(.py 文件),但是每次进程首次导入它们时,Python 都必须即时编译它们;或者您可以拥有字节码文件(.pyc 或 .pyo),但您仅限于特定版本的 Python 以及标志 -O(或 -OO)的缺失(对于 .pyc)或存在(对于 .pyo) )。

    正如其他答案所表明的那样,.egg 之类的格式也可以使用 Python 中的元数据丰富 zip 文件,例如 Java .jar,但是在特定用例中,无论是在普通 zip 文件中为您提供额外价值的特定用例中,由您做出的决定

    【讨论】:

      【解决方案4】:

      您可以创建包含 Python 代码的 zip 文件并使用 zipimport 从 zip 文件中导入。 PyInstaller(跨平台)或py2exe(Windows)等系统将为您完成所有这些工作。

      【讨论】:

        【解决方案5】:

        阅读此PEP 以获取信息。
        另外,Import modules from Zip

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-02
          • 2015-04-04
          • 1970-01-01
          • 1970-01-01
          • 2011-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多