我见过PyPI发行版名称以及其中带有数字的python软件包名称。例如,flake8 是一个示例,您还可以使用import flake8
进行导入。
根据PyPI和PEP标准,包装名称中可以有数字吗?我知道出于语法原因您不能以数字开头,但是从标准角度来看,在中间还是结尾都可以?
答案 0 :(得分:4)
首先,请注意PyPI项目名称和模块名称是完全独立的;没有什么阻止您创建用于安装模块foo
的软件包bar
的,这两个名称在有效范围上遵循单独的策略。
模块名称受Python语法限制为有效identifiers。 In 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
)。
所以,是的,您可以在项目名称和模块名称中都包含一个数字,并且该项目名称甚至可以以一个开头!