PyPI模块与Python库命名的特殊字符使用规则咨询
PyPI模块与Python库命名的特殊字符使用规则咨询
嘿,这个问题问到点子上了——给Python库起个合规的名字能避免后续不少踩坑的情况,我结合实际使用和PyPI的规则给你梳理清楚:
允许使用的字符(附注意事项)
- 小写英文字母(a-z):这是最稳妥的选择,不管是PyPI上传还是Python导入都完全兼容,几乎不会出问题
- 数字(0-9):可以用,但绝对不能以数字开头——比如
123utils这种名字,Python里直接import 123utils会触发语法错误,根本没法导入 - 连字符(
-):PyPI支持,但导入的时候要换成下划线(_),比如你的库叫my-awesome-lib,导入时得写成import my_awesome_lib;而且PyPI会把-和_视为同一个名字,比如my-lib和my_lib会被判定为重名包 - 下划线(
_):Python导入和PyPI都完全支持,和连字符是等效的,如果你不想导入时换字符,直接用下划线更省心
绝对不能碰的字符
- 点号(
.):虽然Python里子模块可以用点(比如os.path),但作为库的顶级名称用点会严重混淆模块结构,PyPI也直接拒绝这类命名 - 特殊符号:
&、=、!、@、#、$这类符号一概不行,PyPI会直接驳回上传请求,而且Python导入语法也不支持这类字符 - 大写字母:PyPI技术上允许,但强烈不推荐——不同操作系统对大小写的处理逻辑不一样,很可能出现安装了
MyLib但导入mylib找不到的情况,徒增麻烦 - 空格:这个不用多说,Python导入根本没法处理带空格的名字,PyPI也绝对不允许
额外小提示
尽量保持名字简洁易读,同时提前查一下PyPI上有没有重名(包括字符转换后重名的情况),不然上传的时候会失败;如果你的库暂时只自己用不上传PyPI,也建议遵循这些规则,方便以后扩展或者分享给别人。
备注:内容来源于stack exchange,提问作者Amin
相关产品推荐
相关产品推荐

