Pull to refresh

Python Module Usage Stats – Feb 2011

Reading time2 min
Views936
Original author: lorg
Ниже список 30 наиболее используемых «базовых модулей», основанный на количестве скачиваний с проекта PyPI. Эти результаты основаны на 11,204 загруженных пакетах. Подробности ниже.

Результаты


image

Обсуждение


Некоторые наблюдения:
  • Похоже, что django набрал «некоторую популярность», и Zope сильно поднялся в списке.
  • Количество проектов, использующих unittest, сильно удручает, особенно по сранению с setuptools.
  • optparse 1875 vs. getopt 515.
  • cPickle 690 vs. pickle 598.
  • simplejson 760 vs. json 593.

В прошлом


В далеком 2007 я написал простой скрипт, который считает импорт модулей в коде. Я использовал его для генерации статистики. Одну или две недели назад я решил повторить этот эксперимент – и посмотрите разницу между 2007 и 2011.

Я начал работать на своим старым кодом и решил обновить его. Анализ импорта в коде не является простой задачей, как кажется на первый взгляд. Я думал использовать tokenize и parser модули, но отказался от этой идеи. Использование parser делало мой код зависимым от версий, и через некоторое время я решил использовать tokenize, т.к. громоздкое регулярное выражение для этой цели у меня уже было.

Методология


Input: PyPI и исходные коды стандартной библиотеки версии 2.7. Я написал простой скрипт (cheese_getter.py) для обработки модулей. Он читал страницу PyPI, и затем использовал easy_install для выборки каждого модуля. Поскольку в проекте PyPI более 13 000 модулей, это заняло некоторое время.

Parsing: Я написал простой код поиска «import x» и «from x import y» выражений в коде. Не обошлось без трудностей: выражения «from x import a, b», «from. import bla» и

from bla import \
               some_module\
               some_module2

должны также поддерживаться.Я конвертировал каждое выражение импорта в серию модулей с точкой. Например, “import a.b” был заменен на “a” и “a.b”, а “from b import c,d” заменен на “b”, “b.c”, и “b.d”.

Processing: Я создал три типа результата.
  • Полное количество импортов.
  • Количество пакетов, импортирующих модуль.
  • Количество пакетов, импортирующих модуль, только для первого модуля в записи с точкой.

Я думаю, что третий вариант наиболее информативен.

Code: Full code is available.
Tags:
Hubs:
Total votes 18: ↑13 and ↓5+8
Comments7

Articles