Python没有任何与.jar文件完全相同的内容.

有很多差异,不知道你想做什么,很难说明如何做.但是,Python Packaging User Guide在解释一切相关方面做得相当不错.

这里有一些主要的区别.

.jar文件是可以删除到应用程序中,或安装在CLASSPATH任何地方的类的编译集合.

在Python中:

> .py(或.pyc)模块可以放在你的应用程序中,或者安装在你的sys.path的任何地方,它可以被导入和使用.

>一个充满模块的目录可以一样对待;它成为一个包(或者如果它不包含__init__.py,它将sys.path其他地方的同名的其他目录合并到一个包中).

>包含任何数量的模块和软件包的.zip存档可以存储在任何地方,并将其路径添加到sys.path中(例如,在运行时或通过PYTHONPATH),并且其所有内容都可以导入.

最常见的是,您希望将事情安装到系统,用户或virtualenv site-packages目录中.推荐的方法是创建一个pip兼容包分发;人们然后安装它(并且可能会通过pip自动从PyPI或私人回购下载它).

但是,pip的确比这更多.它还允许您管理程序包之间的依赖关系.所以理想的情况是,不要列出一些人们必须手动下载和安装的prereqs,而是让它们成为依赖关系,而有些人只需要安装你的库.并且它跟踪您的站点包的状态,因此您可以卸载或升级包,而不必跟踪特定文件.

同时,在Java中,大多数.jar文件是跨平台的;建造一次,在任何地方运行.几个包具有JNI本机代码,不能以这种方式使用,但这不是常规.

在Python中,许多软件包都需要为每个平台编译C扩展,甚至纯Python软件包通常需要进行一些安装时配置.同时,“编译”纯Python在运行时也不会做任何不能做的事情.所以在Python中,你通常会分发源包,而不是编译包.

但是,.wheel是一个二进制包格式.您可以从源码包中创建不同目标的二进制包,那么,如果有人试图安装你的软件包,如果他的系统有一个轮子,那将被下载并安装.