pip search¶
问题¶
默认情况下,pip search
从命令行搜索 PyPI.org 上的软件包。但是,团队正在 考虑移除它,因为他们认为它不太有用,并且在 PyPI 上使用了太多资源 (PyPI XMLRPC 搜索已因滥用/过度使用而被禁用)。
研究¶
在 PyPI XMLRPC 搜索被禁用之前,我们
通过“购买功能”调查收集了关于 pip search 的反馈
发布了一项专门针对 pip search 的调查,询问用户关于
他们目前对 pip search 的使用情况
他们发现 pip search 结果有多有用
他们发现 pip search 结果有多清晰
用户希望 pip 搜索的地方(例如 PyPI 与私有索引)
除了项目名称之外,pip 应该搜索哪些数据
他们会对 pip search 做出哪些更改或添加
结果¶
总共,我们收到了 1070 份关于“购买功能”调查的回复,其中 541 (50.4%) 的受访者在他们的前 10 个功能中选择了“在 pypi.org 上搜索软件包”。
但是,搜索的排名低于以下功能
在不需要任何用户输入的情况下运行 pip(例如在 CI 中)718
显示有关所有已安装软件包的信息707
显示有关单个已安装软件包的信息596
我们收到了 302 份关于 pip search 调查的回复,其中 302 (20.5%) 的受访者要么不知道该命令存在,要么从未使用过它,要么“很少”使用它。
我们发现,剩下的约 80% 使用 pip search 的受访者使用它来
查找/搜索要安装的正确/新/备用软件包
检查软件包名称(验证拼写是否正确)
评估功能(检查软件包的描述)
验证可用性(检查此类软件包是否存在)
搜索软件包的最新版本(验证版本)
查找软件包库和新模块
总的来说,pip search 被认为
比无用更有用
比不清楚更清晰
当被问及 pip 是否应该搜索除了软件包名称之外的项目时,受访者最常要求搜索软件包描述
一些用户还提到,他们希望搜索可配置,例如通过传递标志/选项。
当被问及他们会如何改进 pip search 时,用户表示他们会改进
1. 搜索方法
模糊搜索和不区分大小写应该可以接受
用户应该可以选择按描述、名称、标签进行筛选/排序
2. 搜索结果
相关性:结果应同时显示精确匹配和最接近匹配
顺序/类别:结果应该以特定顺序显示项目,例如下载次数最多(受欢迎程度)、开发状态(最后更新/最新版本)等。
应该限制搜索结果的数量
3. 用户界面
将软件包链接到 pypi 页面
使用颜色编码/系统以提高清晰度
区分精确匹配搜索结果和其他结果:通过突出显示或使用不同的颜色
指示版本兼容性
建议¶
弃用策略¶
鉴于 PyPI 搜索 API 目前已禁用(截至 2021 年 1 月 1 日),出于技术和可持续性原因,我们建议 pip 团队向使用该命令的用户显示一条清晰的错误消息
The PyPI search API has been disabled due to unmanageable load.
To search PyPI, open your browser to search for packages at https://pypi.org
Alternatively, you can search a different index using the --index command.
从长远来看,我们建议 PyPI 团队研究提供搜索结果的替代方法(例如通过缓存),这将使 pip search 能够再次工作。该建议得到了我们研究的支持,该研究表明许多 pip 用户发现此功能很有用。
如果这不可能,pip 团队应该创建清晰的说明,告诉用户改用什么。下面列出了一些建议(基于常见用户流程)
验证软件包的最新版本¶
用户还使用 pip search
命令查找或验证特定软件包的版本。
作为替代方案,pip 团队可以执行以下任一操作
扩展
pip show
功能以包括软件包的已知最新版本;创建
pip outdated
命令,该命令扫描当前依赖项树并输出与已配置索引上的最新版本相比过时的软件包。
用户体验改进¶
如果能够继续支持 pip search,我们强烈建议进行以下用户体验改进
添加对 模糊搜索 的支持,或建议替代/相关的搜索词
添加对不区分大小写搜索的支持
基于软件包的描述进行搜索
将搜索结果链接到软件包的 PyPI 页面(在适当的情况下)
团队应根据具体情况考虑其他用户反馈(如上所述)。