这个词通常指代许多不同的概念 “包”。本页阐明了两个截然不同但 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
文章声明:以上内容(如有图片或视频在内)除非注明,否则均为腾龙猫勺儿原创文章,转载或复制请以超链接形式并注明出处。
本文作者:猫勺本文链接:https://www.jo6.cn/post/55.html