在Python中组合模块文件

在Python中组合模块文件,python,packaging,Python,Packaging,有没有一种类似于Java中的JAR的方式来组合Python文件?我需要一种打包Python类和函数集的方法,但与标准模块不同的是,我希望它位于一个文件中。看看Python代码: 或者,您可以使用常规拉链:最简单的方法是只使用zip。Java中的jar文件是一个zipfile,其中包含一些元数据,如清单;但是您不一定需要metatada——Python可以从zipfile内部导入,只要您将zipfile放在sys.path上,就像您对任何目录所做的那样。在zipfile中,您可以拥有源文件(.py

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

看看Python代码:


或者,您可以使用常规拉链:

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


正如其他答案所指出的那样,有一些格式,如
.egg
,也用Python中的metatada来丰富zipfile,比如Java
.jar
,但是,是否在一个特定的用例中为您提供了额外的值wrt一个普通的zipfile是由您决定的,您可以创建包含Python代码的zip文件,并使用。(跨平台)或(Windows)等系统将为您完成所有这些操作。

请阅读此信息。

另外,.

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


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

谢谢大家!!我见过“蛋”这个词,但我不知道它是什么。我这么做是因为它看起来很酷,但Pybreader看起来不那么可笑和粗鲁。