尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

PyPI包名的命名规则与pip的兼容性机制——为什么pip install sCIKit.-_LEarN也能成功

PyPI包名的命名规则与pip的兼容性机制——为什么pip install sCIKit.-_LEarN也能成功
📅 发布时间:2026/6/17 20:47:01

前言

最近我在使用pip install命令安装包时,偶然发现在包名中使用下划线和使用连字符都可以成功安装,而且安装的确实是同一个包。这就激发了我的好奇心,难道pip install 命令中下划线和连字符是等效的?于是我就去网上搜索了一下,并整理了相关资料写成这篇博文。

PyPI包名规则

PyPA编写的Python软件打包用户指南 中说明,包名允许包含大小写字符、数字、句点、连字符、下划线这几种符号。但同时制定了一个规则,叫包名规范化。包名规范化主要包含三个规则:

  1. 规范包名中的大写字母会全部转换为小写字母
  2. 规范包名中句点(.)连字符(-)下划线(_)会被统一转换为连字符
  3. 如果存在多个连字符,会转换为1个

因此,实际上以下几种包名是等价的:

  • friendly-bard
  • Friendly-Bard
  • FRIENDLY-BARD
  • friendly.bard
  • friendly_bard
  • friendly--bard
  • FrIeNdLy-._.-bArD (尽管很糟糕,但它确实有效)

最终都会转换为规范形式的包名:friendly-bard

pip安装和卸载包的处理方式

在使用pip install <包名>命令安装包时,pip会首先将包名转换为规范包名,之后再去Pypi库查找并安装。因此,假设你要安装scikit-learn这个包,你甚至可以执行pip install sCIKit.-_LEarN,也是可以安装成功的。

同样的,在卸载包时,pip uninstall <包名>命令也一样,大写字符会自动转成小写,其他的连接符会自动转换为连字符。

打印日志细节的不同

不过我发现pip install和pip uninstall在命令执行成功后的打印日志上细节还是有些不同。以用户输入的包名为sCIKit.-_LEarN为例,pip install sCIKit.-_LEarN执行成功后,输出的是:

Successfully installed joblib-1.5.2 sCIKit.-_LEarN-1.6.1 threadpoolctl-3.6.0

可以看到其中输出的包名和用户输入的一致。

但pip uninstall sCIKit.-_LEarN执行成功后,输出的是:

Successfully uninstalled scikit-learn-1.6.1

可以看到其中输出的包名是规范包名。

目前并不清楚pip在安装和卸载时显示的包名有两种行为模式的原因,可能是有意为之。

番外篇:包名和模块名的不同

需要注意的是,pip install的包名和在python代码中使用import导入的相关模块名称并不一定完全一致。

比如常用的机器学习包sklearn,在代码中导入的用法为:from sklearn import *,但安装的命令却是pip install scikit-learn,而不是pip install sklearn。这也是很多新手会踩的一个坑。

相关新闻

  • 一种简单粗暴的网页代理模式
  • 直播App源码功能大揭秘:主播PK、连麦互动与邀请奖励的技术与魅力
  • 这款开源调研系统越来越“懂事”了

最新新闻

  • 2026年上海防水补漏服务完全指南:从老洋房到现代公寓的漏水根治方案 - 精选优质企业推荐官
  • 2026年6月行业内头部硅芯管源头厂家推荐,PVC塑料管/60/50硅芯管/河北格栅管,硅芯管源头厂家口碑推荐 - 品牌推荐师
  • 创意导演技能:科幻风格视频
  • 专网对讲机基础工作原理解析 东北工矿林区通用通信技术科普
  • 深入解析MC68336/376微控制器:CPU32核心与集成外设实战指南
  • M68HC08电机控制SDK深度解析:从硬件抽象到实战避坑

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号