2010-12-10 3 views
0

У меня есть несколько пакетов Python, которые я бы хотел привести в порядок и опубликовать в PyPI. Эти пакеты импортируют несколько модулей Python, которые я написал для увеличения или упрощения определенных операций (например, чтение/запись из файлов CSV с заголовками путем обертывания функций csv), предоставление удобных структур данных и т. Д. В настоящее время эти модули размещаются в верхней части -level, который содержит код для моих проектов, и я полагаюсь на их доступ, добавив этот каталог в мою переменную окружения PYTHONPATH. (Меньше, чем аккуратный, я знаю.)Распространение пакетов Python, которые зависят от внутренних библиотек общего удобства

Создавая отдельный пакет для этих модулей и загружать их на PyPI, я мог бы отметить такой пакет в качестве зависимости для пакетов, которые я на самом деле хочу распространять. Однако эти удобные модули малы и имеют ограниченное использование и интерес, поэтому я не думаю, что они требуют распространения в виде отдельного пакета на PyPI. С другой стороны, я не решаюсь копировать эти удобные модули (т. Е. Использовать cp convenience_module.py projectX/.) в каждый каталог проекта, так как это создает несколько копий одного и того же файла как в репозитории VCS с моим кодом Python, так и в разных исходных дистрибутивах. будет опубликован в PyPI. Есть ли элегантное решение этой проблемы?

ответ

2

Вы не говорите, почему вы не решаетесь «предоставить копии». В целом, я думаю, что разумный подход - подумать о том, как вы настроили себя для использования модулей удобства. Вы устанавливали их в пакетах сайтов (или эквивалентных), или вы просто зависели от того, что они находятся в каталоге, из которого вы запускали код? Однако вы используете модули, это идеальная ситуация или есть способ, который будет приятнее для вас?

Начните с этого, и выясните, как его автоматизировать с помощью setup.py, который позволяет размещать вещи везде, где вы хотите в системе (хотя я категорически не рекомендую злоупотреблять этой возможностью).

Если вы распространяете их как tarball или с пакетом, который им нужен, вы все равно должны поддерживать все файлы, поэтому единственный вопрос заключается в том, хотите ли вы найти для этих удобных модулей для разработки собственных пользовательских сообществ с их собственными запросами поддержки и т. д., или же они явно предназначены только для использования в поддержку этого другого модуля.

Если вы намерены использовать эти модули только для одного модуля, включите их в пакет, возможно, в пакет «utils» внутри дистрибутива. В противном случае вы просто загромождаете индекс теми вещами, которые, по мнению людей, могут быть полезны, но действительно соединены в бедро с чем-то другим, что приводит к изменениям и их обслуживанию.

Если вы намерены использовать эти модули как универсальные и намерены поддерживать их как таковые и полагаете, что они используют вне поддержки этого модуля, распределите их отдельно.

+0

Я переформулировал свой вопрос; «предоставить копии» подразумевает нечто иное, чем то, что я имею в виду, а именно «cp» файл для нескольких деревьев-источников ». Я определенно полагаюсь на изменение измененной переменной PYTHONPATH для обеспечения импорта модулей; они еще не находятся в своем пакете Python с `setup.py` для себя. Кроме того, я не планирую значительно расширить функциональность этих модулей; их содержание - это всего лишь набор функций, которые я нашел, которые я хотел использовать повторно в различных проектах. – gotgenes 2010-12-10 05:24:17

2

Насколько я знаю, распространение этих небольших пакетов через PyPI является только жизнеспособным вариантом. Да, он загромождает индекс почти бесполезными пакетами, но это то, что должно быть решено разработчиками PyPI, а не разработчиками пакетов. Другой альтернативой является использование данных и функций stdlib или других пакетов, а не переосмысление колеса.

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

+0

«Да, он загромождает индекс почти бесполезными пакетами, но это то, что должно быть решено разработчиками PyPI, а не разработчиками пакетов». Это меня поражает как не очень хороший гражданин сообщества Python. Есть ли у PyPI даже сопровождающие? Похоже, что разработчик должен быть «хорошим соседом». С другой стороны, если это так, то я могу пойти с ним. – gotgenes 2010-12-10 05:20:03