【導語】Python 裏各類豐富的標準庫、第三方庫和模塊成爲其廣受歡迎的緣由之一。而 PyPI 就是你們想第三方庫前先要安裝的一個倉庫。做爲使用者,它能夠幫咱們查找 Python 社區開發和共享的軟件;而做爲開發者,能夠用 PyPI 分發本身的軟件。從 2003 年建立 PyPI 到如今,整個社區又是如何發展的?現狀如何?有哪些有趣的發現,本文將與你們一塊兒進行初步探索。python
構建 PyPI 鏡像一件很是酷的事情就是讓我掌握了不少的數據。至此,我決定探索一下自 2003 年建立 PyPI 以來,整個生態系統發生了怎樣的變化。不過,接下來大部分的分析都是始於 2005 年,這一年 PyPI 添加了 upload_time 。cdn
下圖展現了2005-2018 年活躍的 Python Packages 數量,藍色表示 Old Packages,橙色表示 New。blog
在這十四年間,Python 的生態系統一直在穩步增加。隨着 PyPI 在 Python 社區幾乎被徹底接受,在那幾年裏持高速增加。以後活躍 Packages 的數量每一年增加 28% 到 48%(活躍 Packages 指的是已經發布過一版或發佈了新版本)。圖片
在這14年的時間裏,Python的生態系統一直在穩步增加。對於PyPl而言,在它被Python社區幾乎徹底接受的那幾年裏持高速增加狀態, Packages (至少更新過一個版本或剛剛上線的)數量也在活躍增加,年複合增加率可達28%至48%。開發
如圖所示,66%的Packages是新發布的,其中絕大多數不會持續維護;持續一年以上維護的Packages仍是保持強勁增加;每一年新上線的Packages增幅在31%~59%,儘管增速有所減緩,但勢頭不減。這意味着,總體上看,Packages正發佈着愈來愈多的版本,預示着PyPl變得愈來愈成熟。get
結果最令我吃驚的是,每一個Packages的發佈數量。此前我一直靠我的經驗,升級Packages依賴庫,例如 AWS 的 #15 botocore,可是 ccxt 庫 的「脫穎而出」是我沒想到的。在不到兩年的時間裏,ccxt 已經發布了 4659 個版本,發佈數量比其餘的 Packages 的 3 倍還多。可是當我在嘗試加載它的時候, libraries.io 頁面的加載時間要 30 多秒,因此,我也不肯定它的維護是好仍是壞,可是真的是讓人印象很是深入!it
另一個有趣的發現是分發 Packages實踐上的變化。最大的變化是 Python 3 的發佈。Binary Wheels 於 2012 年被引入並編入 PEP 427,被廣泛認爲是分發 Python Packages 的最佳方式,但 Packages 做者的接受週期還須要時間。Python Wheels 能夠跟蹤 PyPI 360 個 Packages 的採用狀況,以下圖:io
(圖片來源:pythonwheels.com/)社區
並非每一個 Packages 都將做爲 wheel 發佈,特別是 psycopg2 立刻就要中止發佈了,其捆綁的 LibSSL 和系統自帶的 LibSSL 間有衝突,不過這種狀況並不常見,因此但願將來能夠有更多的 Packages 被做爲 wheel 分發,保持如今的強勁勢頭,能夠達到 90% 乃至更多。若是按照下面圖中趨勢的發展,也許 2022 年就能夠實現了。class