PyPI 谜题:-(连字符)和 . (点)分别用于什么情况?
PyPI puzzle: -(Hyphen) and . (Dot) are used in what cases respectively?
您可以在 PyPI 上看到名称类似于 django-pipeline
或 django-localflavor
的项目,但您也可以看到 plone.scale
.
前者使用-
(连字符),后者使用.
(点)。
如果这些项目不为人所知,那么它们可能是随意使用的,没有经过深思熟虑,但这两个项目都是众所周知的,但是使用不同的符号来分隔 PyPI 项目名称。
搜索 'PyPi Project Hyphen Dot' 没有找到任何相关信息。
连字符或点,这两种用法有区别吗?如果有,区别是什么?分别在什么情况下使用?
特别说明:这里指的是发布包的名称,不是导入包的名称,不能使用-
或.
。
.
是一种访问包子模块的方法。所以,plone
是父包,scale
是子模块。你可以在这里阅读它:https://docs.python.org/3/tutorial/modules.html#packages
如果您曾经使用过 os
模块,您通常会做如下事情:
import os
path = os.path.join("parent", "child")
这是一回事:https://docs.python.org/3/library/os.path.html
连字符只是多词名称的一部分,不用于任何类型的 package/submodule 关系。
plone
和django
都是非常大的项目,所以开发者选择将项目的不同部分独立分发,这使得开发更容易,例如依赖关系的管理会更简单。
当没有命名空间包机制时,常使用前缀来表示分发包属于某个项目[^1],django
是一个典型的例子,这种方式可行但需要很多体力劳动; plone
使用命名空间包机制并完全自动组合不同的分发包。
短)。
特别说明:PyPI 项目名称通常与包名称相对应,但是 django
发行版为了导入,与项目名称相比 [^2].
[^1]:Packaging namespace packages — Python Packaging User Guide:一个简单的替代方法是在所有发行版上使用前缀,例如 import mynamespace_subpackage_a(您甚至可以使用 import mynamespace_subpackage_a as subpackage_a 保留导入对象
[^2]:PEP 423 -- Naming conventions and recipes related to packaging | Python.org:举个例子,pipeline [13], python-pipeline [14] 和django-pipeline [15] 都发布了一个名为“管道”。所以安装其中两个会导致错误。如果这些发行版使用单个名称,则不会发生此问题。
您可以在 PyPI 上看到名称类似于 django-pipeline
或 django-localflavor
的项目,但您也可以看到 plone.scale
.
前者使用-
(连字符),后者使用.
(点)。
如果这些项目不为人所知,那么它们可能是随意使用的,没有经过深思熟虑,但这两个项目都是众所周知的,但是使用不同的符号来分隔 PyPI 项目名称。
搜索 'PyPi Project Hyphen Dot' 没有找到任何相关信息。
连字符或点,这两种用法有区别吗?如果有,区别是什么?分别在什么情况下使用?
特别说明:这里指的是发布包的名称,不是导入包的名称,不能使用-
或.
。
.
是一种访问包子模块的方法。所以,plone
是父包,scale
是子模块。你可以在这里阅读它:https://docs.python.org/3/tutorial/modules.html#packages
如果您曾经使用过 os
模块,您通常会做如下事情:
import os
path = os.path.join("parent", "child")
这是一回事:https://docs.python.org/3/library/os.path.html
连字符只是多词名称的一部分,不用于任何类型的 package/submodule 关系。
plone
和django
都是非常大的项目,所以开发者选择将项目的不同部分独立分发,这使得开发更容易,例如依赖关系的管理会更简单。
当没有命名空间包机制时,常使用前缀来表示分发包属于某个项目[^1],django
是一个典型的例子,这种方式可行但需要很多体力劳动; plone
使用命名空间包机制并完全自动组合不同的分发包。
短)。
特别说明:PyPI 项目名称通常与包名称相对应,但是 django
发行版为了导入,与项目名称相比 [^2].
[^1]:Packaging namespace packages — Python Packaging User Guide:一个简单的替代方法是在所有发行版上使用前缀,例如 import mynamespace_subpackage_a(您甚至可以使用 import mynamespace_subpackage_a as subpackage_a 保留导入对象
[^2]:PEP 423 -- Naming conventions and recipes related to packaging | Python.org:举个例子,pipeline [13], python-pipeline [14] 和django-pipeline [15] 都发布了一个名为“管道”。所以安装其中两个会导致错误。如果这些发行版使用单个名称,则不会发生此问题。