带有数字的python软件包名称是否可以接受?

时间:2018-11-16 22:55:00

标签: python pip setuptools pypi

我见过PyPI发行版名称以及其中带有数字的python软件包名称。例如,flake8 是一个示例,您还可以使用import flake8进行导入。

根据PyPI和PEP标准,包装名称中可以有数字吗?我知道出于语法原因您不能以数字开头,但是从标准角度来看,在中间还是结尾都可以?

1 个答案:

答案 0 :(得分:4)

首先,请注意PyPI项目名称和模块名称是完全独立的;没有什么阻止您创建用于安装模块foo的软件包bar的,这两个名称在有效范围上遵循单独的策略。

模块名称受Python语法限制为有效identifiersIn Python 2,这意味着它们必须由ASCII字母或下划线组成,后跟零个或多个ASCII字母,数字和/或下划线。在Python 3中,添加了Unicode,事情变得更加复杂,但是我相信所有ASCII模块名称仍然遵循相同的限制。

PyPI上的项目名称(在PEP 508中进行指定)必须完全由ASCII字母,数字,.-和/或{{1}组成},并且必须以字母或数字开头和结尾。还有a normalization policy强制不区分大小写,并且将_.-的运行视为相等,因此_foo-bar被认为是同一项目。

此外,PEP 8 has a section on package and module names;它说:

  

模块应使用简短的全小写名称。如果模块名称可以提高可读性,则可以在模块名称中使用下划线。尽管不鼓励使用下划线,但Python软件包也应使用短小写全名。

     

当用C或C ++编写的扩展模块具有随附的Python模块提供更高级别(例如,更多面向对象)的接口时,C / C ++模块将使用前导下划线(例如FOO.BAR)。

所以,是的,您可以在项目名称和模块名称中都包含一个数字,并且该项目名称甚至可以以一个开头!