7

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

4

5 回答 5

10

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

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

于 2011-07-07T13:27:07.047 回答
7

看看 Python Eggs: http: //peak.telecommunity.com/DevCenter/PythonEggs

或者,您可以使用常规 zip:http ://docs.python.org/library/zipimport.html

于 2009-07-09T14:00:31.540 回答
2

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

正如其他答案所表明的那样,还有一些格式,例如.egg在 Python 中使用 metatada 丰富 zipfile 的格式,例如 Java .jar,但是在特定的用例中,是否在普通的 zipfile 中为您提供额外的价值是您做出的决定

于 2009-07-09T14:00:55.800 回答
1

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

于 2009-07-09T14:01:42.443 回答
0

阅读此PEP以获取信息。
此外,从 Zip 导入模块

于 2009-07-09T14:03:32.347 回答