python - 与 Java .jar 文件等效的 python 是什么?

标签 python

Java 的概念是将所有代码打包到一个称为 Jar 文件的文件中。 Python 有没有等价的想法?如果是这样,它是什么?如何打包文件?

最佳答案

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 或私有(private)仓库自动下载)。

然而,

pip 的作用远不止于此。它还允许您管理包之间的依赖关系。因此,理想情况下,与其列出一堆必须手动下载和安装的先决条件,不如让它们成为依赖项,然后有人只需 pip install your-library。它会跟踪您的站点包的状态,因此您可以卸载或升级包,而无需跟踪特定文件。


同时,在 Java 中,大多数 .jar 文件都是跨平台的;构建一次,随处运行。少数包有 JNI 原生代码,不能这样使用,但这不是常态。

在 Python 中,许多包都有 C 扩展,必须为每个平台编译,甚至纯 Python 包也经常需要进行一些安装时配置。同时,“编译”纯 Python 并没有做任何在运行时无法做到的事情。所以在 Python 中,您通常分发 source 包,而不是 编译 包。

但是,.wheel 是二进制包格式。您可以 pip wheel 从源包中为不同的目标构建二进制包;然后,如果有人尝试 pip install 你的包,如果他的系统有一个轮子,那将被下载并安装。

关于python - 与 Java .jar 文件等效的 python 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25455978/

相关文章:

python - 在 python 中使用 .csv 按特定列数据排序

python - 将 FileType 与 django 自定义管理命令一起使用?

python - 使用 pool.map 在 Python 中运行多个函数

Python:使用 *args 作为字典键

python - 通过python中的原始套接字发送scapy数据包

python - 如何查找用户在 Django 应用程序中的登录总数?

python -/bin/sh : 1: [: missing ]

python - 在具有导入函数的模块上使用 pydoc

Python保存到mysql数据库

Python 与 Sage 的导入错误