分发包与导入包

猫勺猫勺 03-13 1.13 K 阅读

这个词通常指代许多不同的概念 “包”。本页阐明了两个截然不同但 Python 打包、“分发包”和“导入”中的相关含义 包”。

什么是分发包?

分发包是您可以安装的软件。 大多数时候,这是“项目”的代名词。键入 时,或写入 时,是分发包的名称。什么时候 您搜索或浏览 PyPI,这是最广为人知的集中式来源 安装 Python 库和工具,您看到的是分发列表 包。或者,术语“分发包”可用于 引用包含项目特定版本的特定文件。pip install pkgdependencies = ["pkg"]pyproject.tomlpkg

请注意,在 Linux 世界中,一个“分发包”, 最常见的缩写是“发行版包”或简称为“包”, 是由 Linux 发行版的系统包管理器提供的东西, 这是不同的含义。

什么是导入包?

导入包是一个 Python 模块。因此,当您编写或在 Python 代码中时, 导入包的名称。更准确地说,导入包是特殊的 可以包含子模块的 Python 模块。例如,软件包包含 和 等模块。通常,导入包是文件上的一个目录 system,包含模块作为文件,子包作为 子。import pkgfrom pkg import funcpkgnumpynumpy.linalgnumpy.fft.py

您可以在安装发行版后立即使用导入包 提供它的包。

分发包和导入包之间有什么链接

大多数情况下,分发包提供单个导入 包(或非包模块),具有匹配的名称。例如,让您 .pip install numpyimport numpy

但是,这只是一个惯例。PyPI 和其他包索引没有 强制执行分发包名称与 导入它提供的包。(这样做的后果是你不能盲目地 安装 PyPI 包,如果您看到 ;这可能会安装 意外的,甚至可能是恶意包。fooimport foo

分发包可以为导入包提供不同的 名字。这方面的一个例子是流行的 Pillow 图像库 加工。它的分发包名称是 ,但它提供 导入包 .这是出于历史原因: 枕头 最初是作为 PIL 库的一个分支开始的,因此它保留了导入名称,以便现有的 PIL 用户可以毫不费力地切换到 Pillow 努力。更一般地说,现有库的分支是一个常见的原因 用于分发包和导入之间的不同名称 包。PillowPILPIL

在给定的包索引(如 PyPI)上,分发包名称必须为 独特。另一方面,进口包没有这样的要求。 具有相同名称的导入包可以由多个提供 分发包。同样,分叉是造成这种情况的常见原因。

相反,一个分发包可以提供多个导入包, 虽然这不太常见。一个例子是 attrs 分布 包,它同时提供导入包和更新的 API,以及具有较旧但受支持的 API 的导入包。attrsattr

分发包名称和导入包名称如何比较?

导入包应具有有效的 Python 标识符作为其名称(确切的规则可在 Python 中找到 文档) [1]。特别是,他们使用下划线作为单词 分隔符,它们区分大小写。_

另一方面,分发包可以使用连字符或 强调。它们也可以包含点 ,有时是 用于打包命名空间包的子包。在大多数情况下,它们是不敏感的 到案例和 VS。 差异,例如,与( 名称规范化规范中给出了精确的规则)。-_.-_pip install Awesome_Packagepip install awesome-package

The End 微信扫一扫

文章声明:以上内容(如有图片或视频在内)除非注明,否则均为腾龙猫勺儿原创文章,转载或复制请以超链接形式并注明出处。

本文作者:猫勺本文链接:https://www.jo6.cn/post/55.html

上一篇 下一篇

相关阅读

取消
微信二维码
微信二维码
支付宝二维码