有没有办法将Python文件放在一起,类似于Java中的JAR?我需要一种打包Python类和函数的方法,但与标准模块不同,我希望它在一个文件中。
答案 0 :(得分:9)
在寻找同一问题的解决方案后,我最终编写了一个简单的工具,将多个.py文件合并为一个:PyBreeder
它只适用于纯Python模块,并且可能需要一些试错才能正确获得模块的顺序,但是当您想要将具有某些依赖性的脚本部署为单个.py时,它非常方便。评论/补丁/批评是非常受欢迎的!
答案 1 :(得分:7)
看看Python Eggs:http://peak.telecommunity.com/DevCenter/PythonEggs
或者,您可以使用常规拉链:http://docs.python.org/library/zipimport.html
答案 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。