Слишком Много Py В PyPI

Существует способ уменьшить объем кода в стандартной библиотеке Python – удалить мертвые или умирающие батареи. Предполагается, что библиотека пакетов PyPI может взять на себя нагрузку. Новые исследования показывают, что в этом могут быть некоторые трудности.

Python часто выставляется как “язык, включенный в комплект поставки”. Причина в том, что он имеет стандартную библиотеку, которая включает в себя многие функции, необходимые для начала работы над проектом. Это имеет много преимуществ. Во-первых, вам не нужно оглядываться, чтобы узнать, какой модуль лучше всего использовать для какой-либо задачи. Если он находится в стандартной библиотеке, вы просто используете его и придерживаетесь его, если только нет веской причины для замены. Это означает, что большинство программистов на Python будут использовать один и тот же модуль для выполнения одной и той же задачи, и это означает, что растет количество знаний сообщества о том, как это сделать.

Это звучит здорово, но, по-видимому, усилия, необходимые для поддержания стандартной библиотеки, оказываются слишком большими, и есть “мертвые батареи”, а также живые. Предложение состоит в том, что стандартная библиотека должна быть уменьшена, а удаленные модули должны попасть в репозиторий, такой как PyPI.

Это ужасная идея.

Некоторые исследования Итана Боммарито и Майкла Джея Боммарито II в Мичиганском университете дают вам некоторое представление о том, что на самом деле представляет собой растянутый беспорядок PyPI:

Существует в общей сложности 2,4 ТБ пакетов выпуска, и он быстро растет. Сообщается, что ежегодный совокупный темп роста составляет 47,31% для активных пакетов, а число авторов растет на 39,3%.

Это еще интереснее:

Мы обнаружили, что большинство пакетов и выпусков довольно малы, со средним размером выпуска 22,6 Кб и средним размером пакета 40,0 Кб. Тем не менее, снова появляется правый перекос, причем самые большие выпуски весят почти 600 мегабайт, а самые большие пакеты используют почти 175 гигабайт. Вместе четыре пакета “глубокого обучения” tf-nightly, mxnet-cu100mkl, mxnet-cu100 и tf-nightly-gpu используют около 500 гигабайт хранилища PyPI – почти 25% всего хранилища PyPI.

Также интересен ассортимент лицензий:

Семейство лицензий

%

МТИ

60%

GPL

16%

BSD

11%

Апач

8%

с 27% назначенных как “неизвестные” и 0,1% патентованных лицензий. Ясно, что пакет, который вы используете, будет зависеть от лицензии, и вам придется узнать, прежде чем использовать его.

Еще одна интересная статистика заключается в том, что только 24% модулей считаются “готовыми к производству/стабильными”. Большинство, 28% находятся в бета-версии и 22% – в альфа-версии. Конечно, то, что означают эти термины, очень изменчиво. Хорошо реализованная альфа-версия может быть предпочтительнее не столь стабильного готового к производству пакета.

Итак, является ли PyPI альтернативой “включенным батареям”? Трудно понять, как это могло быть. Если вы ищете пакет на PyPI, вы, скорее всего, получите несколько сотен результатов, и вопрос в том, какой из них использовать? Например, стандартная библиотека имеет базовый веб-сервер, который очень полезен для небольших проектов и, в частности, для приложений Интернета Вещей. Если вы ищете “веб-сервер” на PyPI, вы получаете 10 000 обращений, не имея понятия о том, что “рекомендуется”. Если вы отфильтруете по “производство/стабильность”, вы все равно получите 4228 просмотров. Если вы сузите его до HTTP-серверов, вы получите гораздо лучшие 36 обращений, но все равно не сможете определить, какой из них стоит вашего времени.

Включенные батареи-это гораздо лучший способ, чем этот бесплатный для всех.

Одним из возможных решений является расширение стандартной библиотеки за счет аккредитованных модулей в библиотеке PyPI. Как сделать “аккредитацию” – это проблема, которую нужно решить.

Майк Джеймс-поклонник Python и автор книги Programmer’s Python: Everything-это объект, опубликованный I/O Press как часть библиотеки I Programmer. С подзаголовком “Что-то совершенно другое” это первый том его трилогии о Питоне.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *