PyPI项目发布包命名中连字符(-)与点(.)的适用场景分别是什么?
PyPI发布包名连字符与点分隔符的差异说明
PyPI官方对发布包的名称没有强制的分隔符规范,连字符、点都属于合法可使用的字符,二者的使用差异完全来自社区约定俗成的惯例,没有官方界定的适用规则,具体的使用场景可以参考以下通行惯例:
- 连字符(-)是当前PyPI包命名的主流选择,绝大多数新发布的包都会采用这种分隔方式。这种命名通常用来标识项目属于某个主流生态的衍生/扩展工具,比如你提到的
django-pipeline、django-localflavor,名称前缀直接对应生态主项目,可读性非常强,用户看到名称就能直观判断包的适用场景。 - 点(.)分隔的命名大多是老牌Python生态的历史遗留惯例,常见于有统一官方命名空间的生态,最典型的就是Plone、Zope生态的相关包,比如你提到的
plone.scale,本质是用点来划分命名空间,明确标识这个包归属于对应组织/生态官方维护,属于该生态的原生能力模块。目前新的生态很少使用这种命名方式,基本只有存量的成熟生态还在沿用。
额外提示:PyPI做包名匹配时会自动等价处理连字符、点和下划线,也就是说a-b、a.b、a_b会被判定为同一个包名,命名时注意不要和已有的包出现仅分隔符不同的情况,避免用户混淆装错包。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

