부록: PyPI에서의 설치 프로그램 사용 현황 분석
Note
이 분석은 완벽하지 않습니다. 이용 가능한 최선의 데이터를 사용했지만, 미러, 기업에서 사용하는 캐시, 그 밖의 교란 요인이 이 분석의 수치에 영향을 줄 수 있습니다. 이 수치는 구체적이고 신뢰할 만한 값이라기보다는 경향으로 여기십시오.
PEP 777과 관련된 한 가지 질문은 Python 사용자가 설치 프로그램을 얼마나 자주 업데이트하는가 하는 것입니다. 사용자가 상당히 자주 업데이트한다면 호환성 문제는 그다지 중요하지 않습니다. 새로운 기능이 추가될 즈음에는 사용자가 이미 최신 버전을 사용하고 있을 것이기 때문입니다. 반면 사용자가 오래된 설치 프로그램을 자주 사용한다면, PyPI에 있는 호환되지 않는 휠은 훨씬 더 큰 영향을 미칠 것입니다. 최신 설치 프로그램과 오래된 설치 프로그램의 상대적 비율을 파악하기 위해 PyPI 다운로드 통계를 활용할 수 있습니다.
PyPI는 BigQuery 데이터셋을 공개하며, 여기에는 PyPI가 받는 각 다운로드에 대한 정보가 담겨 있고, 가능한 경우 설치 프로그램 이름과 버전도 포함됩니다. 이 분석을 위한 데이터를 수집하는 데 다음 쿼리를 사용했습니다:
#standardSQL
SELECT
details.installer.name as installer_name,
details.installer.version as installer_version,
COUNT(*) as num_downloads,
FROM `bigquery-public-data.pypi.file_downloads`
WHERE
-- Only query the last 6 months of data
DATE(timestamp)
BETWEEN DATE_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 6 MONTH), MONTH)
AND CURRENT_DATE()
GROUP BY `installer_name`, `installer_version`
ORDER BY `num_downloads` DESC
원시 데이터를 확보했으므로, PyPI에서 패키지를 다운로드하는 설치 프로그램이 얼마나 최신 상태인지 조사를 시작할 수 있습니다. 아래 차트는 2024년 3월 10일부터 2024년 9월 10일까지 6개월 동안 PyPI에서 일어난 모든 다운로드를 설치 프로그램 이름별로 나누어 보여 줍니다.
위에서 볼 수 있듯이, 이 기간에 가장 많이 사용된 설치 프로그램은 pip입니다. 단순화를 위해, 이 분석에서는 설치 프로그램이 얼마나 최신 상태인지 살펴볼 때 pip 설치에 초점을 맞춥니다. pip는 오랫동안 존재해 왔으므로, 패키지 다운로드에 사용된 pip의 버전을 분석하면 사용자가 설치 프로그램을 얼마나 자주 업데이트하는지 파악할 수 있을 것입니다. 아래는 같은 6개월 동안 PyPI에서 일어난 설치를 이번에는 pip 설치 프로그램의 메이저 버전별로 묶어 나누어 보여 주는 차트입니다. pip는 달력 기반 버전 관리를 사용하므로, pip 20.x에서 이루어진 설치는 해당 사용자가 4년 동안 pip를 업데이트하지 않았다는 뜻입니다.
현재 사용자의 3분의 2 이상이 올해 또는 작년에 나온 pip를 사용하고 있습니다. 그러나 약 7%는 최소 4년 이상 된 버전을 사용하고 있습니다(!). 이는 설치 프로그램을 정기적으로 업데이트하지 않는 사용자가 롱테일을 이루고 있음을 보여 줍니다.
PEP 777에 대한 처음의 질문으로 돌아가 보면, 메이저 버전이 2인 휠을 PyPI에 게시할 때는 주의를 기울여야 할 것으로 보입니다. 이러한 휠은 pip를 정기적으로 업데이트하지 않는, 적지만 무시할 수 없는 비율의 사용자에게 문제를 일으킬 가능성이 높기 때문입니다.