簡說 Python 生態系統的 14 年演變
出品 | Python大本營(ID:pythonnews)
【CSDN 編者按】Python 里各種豐富的標準庫、第三方庫和模塊成為其廣受歡迎的原因之一。而 PyPI 就是大家想第三方庫前先要安裝的一個倉庫。
作為使用者,它可以幫我們查找 Python 社區開發和共享的軟體;而作為開發者,可以用 PyPI 分發自己的軟體。
從 2003 年創建 PyPI 到現在,整個社區又是如何發展的?現狀如何?有哪些有趣的發現,本文將與大家一起進行初步探索。
構建 PyPI 鏡像一件非常酷的事情就是讓我掌握了很多的數據。至此,我決定探索一下自 2003 年創建 PyPI 以來,整個生態系統發生了怎樣的變化。不過,接下來大部分的分析都是始於 2005 年,這一年 PyPI 添加了 upload_time 。
下圖展示了2005-2018 年活躍的 Python Packages 數量,藍色表示 Old Packages,橙色表示 New。
在這十四年間,Python 的生態系統一直在穩步增長。隨著 PyPI 在 Python 社區幾乎被完全接受,在那幾年裡持高速增長。之後活躍 Packages 的數量每年增長 28% 到 48%(活躍 Packages 指的是已經發布過一版或發布了新版本)。
在這14年的時間裡,Python的生態系統一直在穩步增長。對於PyPl而言,在它被Python社區幾乎完全接受的那幾年裡持高速增長狀態, Packages (至少更新過一個版本或剛剛上線的)數量也在活躍增長,年複合增長率可達28%至48%。
如圖所示,66%的Packages是新發布的,其中絕大多數不會持續維護;持續一年以上維護的Packages還是保持強勁增長;每年新上線的Packages增幅在31%~59%,儘管增速有所減緩,但勢頭不減。這意味著,整體上看,Packages正發布著越來越多的版本,預示著PyPl變得越來越成熟。
結果最令我吃驚的是,每個Packages的發布數量。此前我一直靠個人經驗,升級Packages依賴庫,例如 AWS 的 #15 botocore,但是 ccxt 庫 的「脫穎而出」是我沒想到的。在不到兩年的時間裡,ccxt 已經發布了 4659 個版本,發布數量比其他的 Packages 的 3 倍還多。但是當我在嘗試載入它的時候, libraries.io 頁面的載入時間要 30 多秒,所以,我也不確定它的維護是好還是壞,但是真的是讓人印象非常深刻!
另外一個有趣的發現是分發 Packages實踐上的變化。最大的變化是 Python 3 的發布。Binary Wheels 於 2012 年被引入並編入PEP 427,被普遍認為是分發 Python Packages 的最佳方式,但 Packages 作者的接受周期還需要時間。Python Wheels 可以跟蹤 PyPI 360 個 Packages 的採用情況,如下圖:
(圖片來源:https://pythonwheels.com/)
並不是每個 Packages 都將作為 wheel 發布,特別是 psycopg2 馬上就要停止發布了,其捆綁的 LibSSL 和系統自帶的 LibSSL 間有衝突,不過這種情況並不常見,所以希望未來可以有更多的 Packages 被作為 wheel 分發,保持現在的強勁勢頭,可以達到 90% 乃至更多。如果按照下面圖中趨勢的發展,也許 2022 年就可以實現了。
https://pydist.com/blog/growth-of-python-ecosystem
聲明:本文為Python大本營編譯文章,轉載請聯繫Python大本營。
【End】
熱 文推 薦
※那些簡歷造假拿 Offer 的程序員,後來都怎麼樣了?
※叫板 Android 開發!跨平台應用開發神器 Flutter 又添開源插件!
TAG:CSDN |