在Python中组合模块文件

时间:2009-07-09 13:59:06

标签: python packaging

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

5 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:7)

答案 2 :(得分:2)

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

正如其他答案所指出的那样,.egg这样的格式在Python中也使用metatada丰富了zip文件,比如Java .jar,但是在特定的用例中是否为你提供了额外的值wrt普通的zipfile是你做出的决定

答案 3 :(得分:1)

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

答案 4 :(得分:0)

阅读此PEP了解信息 另外,Import modules from Zip