【发布时间】:2009-07-09 13:59:06
【问题描述】:
有没有办法将 Python 文件放在一起,类似于 Java 中的 JAR?我需要一种打包 Python 类和函数集的方法,但与标准模块不同,我希望它位于一个文件中。
【问题讨论】:
有没有办法将 Python 文件放在一起,类似于 Java 中的 JAR?我需要一种打包 Python 类和函数集的方法,但与标准模块不同,我希望它位于一个文件中。
【问题讨论】:
在寻找相同问题的解决方案后,我最终编写了一个简单的工具,将多个 .py 文件合并为一个:PyBreeder
它只适用于纯 Python 模块,并且可能需要一些试验和错误才能使模块的顺序正确,但是当您想要将具有某些依赖项的脚本部署为单个 .py 时,它非常方便。非常欢迎评论/补丁/批评!
【讨论】:
看看 Python Eggs:http://peak.telecommunity.com/DevCenter/PythonEggs
或者,您可以使用常规拉链:http://docs.python.org/library/zipimport.html
【讨论】:
最简单的方法是使用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 文件中为您提供额外价值的特定用例中,由您做出的决定
【讨论】:
您可以创建包含 Python 代码的 zip 文件并使用 zipimport 从 zip 文件中导入。 PyInstaller(跨平台)或py2exe(Windows)等系统将为您完成所有这些工作。
【讨论】:
阅读此PEP 以获取信息。
另外,Import modules from Zip。
【讨论】: