可以接受带有数字的python包名称吗?

Tom*_*Tom 4 python pip setuptools pypi

我见过 PyPI 发行版名称以及带有数字的 Python 包名称。例如flake8就是一个示例,您还可以使用import flake8.

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

jwo*_*der 10

首先,注意 PyPI 项目名称和模块名称是完全独立的;没有什么能阻止你创建一个foo安装模块的包,bar这两个名称遵循不同的策略来确定什么是有效的。

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

PyPI 上的项目名称(如PEP 508等中所指定)必须完全由 ASCII 字母、数字.-、 和/或 组成_,并且它们必须以字母或数字开头和结尾。还有一个正常化的政策,强制执行的情况下,不敏感和治疗奔跑.-_作为平等的,所以foo-barFOO.BAR被认为是同一个项目。

此外,PEP 8 有一个关于包和模块名称的部分;它说:

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

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

所以,是的,您可以在项目名称和模块名称中使用数字,并且项目名称甚至可以以 1 开头!