Инициализировать макет проекта в python?

Предположим, что у программиста есть следующая проблема: он хочет начать новый проект python. Ему нужна базовая компоновка файлов шаблонов, таких как тестовый каталог, исходный каталог, setuptools script и т.д. Как он создает все эти материалы и макет с помощью одной команды?

Например, paster (как предлагается в одном из ответов, предоставляет вам эту услугу)

paster create 
Selected and implied templates: PasteScript#basic_package 
A basic setuptools-enabled package 

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

Ответ 1

Вам нужно что-то, что поддерживает шаблоны, чтобы снять это. Самым популярным в сообществе python является пастеризатор.

easy_install pastescript # A one-time install
paster create

Если вы уже определили имя пакета, это просто:

paster create mypackage

Если вы хотите настроить шаблон, самым простым способом является создание собственного пакета python, который включает в себя настраиваемый шаблон. После того, как вы установили его в свою среду, вы можете использовать этот настраиваемый шаблон столько, сколько хотите. (Это то, что используется фреймворками, такими как пилоны, для создания шаблона для веб-приложения).

paster create -t libtemplate mypackage
paster create -t apptemplate mypackage

Подробнее о том, как создавать шаблоны (которые состоят из сочетания кода и исходных файлов), см. ниже: http://pythonpaste.org/script/developer.html#templates Вы заметите, что шаблоны поддерживают наследование, чтобы вы могли, например просто основывайтесь на включенном шаблоне или создайте свои собственные шаблоны с нуля.

Для хорошего примера настраиваемого шаблона вы можете посмотреть шаблон pylons в источнике, здесь: Код шаблона Pylons

Кроме того, если вы еще не используете его, вы должны взглянуть на Ian Bicking virtualenv. Он позволяет создавать временные "виртуальные" среды, которые позволяют устанавливать пакеты python без использования и/или противоречия с любыми пакетами системы, которые вы, возможно, установили.

Стандартная настройка с virtualenv и pastescript может выглядеть примерно так:

mkdir mypackage && cd mypackage
virtualenv --distribute env
source env/bin/activate # 'Turns on / activates' the environment
easy_install pastescript
paster create mypackage

Ответ 2

Я использую modern-package-template для компоновки моих проектов Python.

modern-package-template - это шаблон PasteScript для создания исходного макета для ваших проектов Python с использованием современных инструментов и практик, применяемых в сообществе Python. Таким образом, ваши проекты будут иметь следующие характеристики:

  • Используйте Distribute вместо setuptools, поскольку сам BDFL поддерживает его.
  • Поддержка Buildout, хотя вы не обязаны ее использовать.
  • README.txt и NEWS.txt автоматически включаются в ваши метаданные пакета как long_description, что делает их отображаемыми на странице PyPI для вашего проекта.
  • Автоматическое создание script (или .exe) с использованием Distribute

Дополнительная информация и загрузка с pypi: http://pypi.python.org/pypi/modern-package-template

Ответ 3

Вы можете создавать свои собственные шаблоны. Действительно полезно, например, для внутренних стандартов структуры проекта.

Лучший способ начать свой собственный - начать с существующего примера и скопировать/вставить соответствующие биты из него. Предложение: ZopeSkel, поскольку он довольно большой, с большим количеством примеров. Просмотрите исходный код.

Ответ 4

Я использовал cookiecutter. Он написан на питоне, но может быть использован для любого проекта; не просто питон. Он использует Jinja для шаблонов и имеет функции pre и post hooks (написанные на python или bash), которые могут легко создавать/управлять одним виртуальным пользователем или любым другим, что вы можете придумать. Вы можете хранить свои собственные шаблоны в локальном каталоге или вытаскивать других людей непосредственно из Интернета и запускать их, не сохраняя их локально сначала. Он кажется гораздо более универсальным, простым в использовании и более полезным IMHO, затем пастером (раскрытие: я не пробовал пастер). Он также активно развивается.