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 問卷調查的回覆,其中 62 位(20.5%)的受訪者不是不知道這個指令的存在、就是從未使用過,或「很少」使用。
我們發現剩下的約 80% 使用 pip search 的受訪者使用它來
尋找或搜尋要安裝的正確/新的/備用的套件
檢查套件名稱(驗證拼字正確性)
評估功能(檢查套件的說明)
驗證可用性(檢查是否有這樣的套件)
搜尋套件的最新版本(驗證版本)
尋找套件函式庫和新模組
一般來說,pip search 被認為是
有用多於沒用
清楚多於不清楚
當被問及 pip 是否應該搜尋而不是套件名稱的其他項目時,受訪者最常要求搜尋套件說明
有些使用者也提到他們希望搜尋可以進行設定,例如透過傳遞旗標/選項。
當被問及他們將如何改善 pip search 時,使用者表示他們會改善
1. 搜尋方法
模擬搜尋和不區分大小寫應是可以接受的
使用者應有選擇,可以依據說明、名稱和標籤進行過濾/排序
2. 搜尋結果
相關性:結果應同時顯示完全符合的條件和最接近的條件
order/category:結果應依特定順序顯示項目,如最高下載次數(熱門程度)、開發狀態(最後更新 / 最新版本)等。
搜尋結果的數量應有限制。
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 搜尋功能能夠再次運作。我們的研究結果支持這項建議,這項研究顯示許多 pip 使用者發現這個功能非常實用。
如果無法達成,pip 團隊應建立明確的說明,告知使用者可以改用哪些方式。以下是幾個建議(基於常見使用者流程)
驗證套件最新版本¶
使用者也會使用 pip search
指令來尋找或驗證特定套件的版本。
作為替代品,pip 團隊可以進行下列其中一項
擴充
pip show
功能,包含已知此套件的最新版本;建立
pip outdated
指令,用於掃描目前的依賴結構,並輸出已過時(與已設定索引中的最新版本相比較)的套件。
UX 改進¶
如果要繼續支援 pip search,我們強烈建議進行下列 UX 改進
加入支援 模糊搜尋,或建議其他/相關的搜尋字詞
加入支援不分大小寫搜尋
根據套件描述進行搜尋
提供搜尋結果的連結到套件的 PyPI 頁面(如果適當的話)
團隊應逐案考慮其他使用者回饋(如上所述)。