Python: установка man-страниц в проекте на основе distutils - PullRequest
17 голосов
/ 07 сентября 2010

У меня есть проект Python, который представляет собой набор сценариев командной строки и вспомогательный пакет.Поскольку у этих сценариев есть несколько параметров командной строки, я решил создать страницу руководства для каждого сценария и использовал ronn (http://rtomayko.github.com/ronn/) для написания руководств в Markdown и создания из него mdoc.

Вопрос в том,: как создать и установить man-страницы в проекте на основе distutils?

Я пришел к следующему решению: создать простой скрипт install.sh , который генерирует и устанавливает страницы руководства. Я называю этоскрипт из перегруженной команды 'install' и передача ему указанного префикса ... вы можете проверить фактический код здесь: http://github.com/novel/lc-tools.

Мне не очень нравится это решение, так как для простой задачи, которую я должен добавитьнекоторые хаки для setup.py и реализации сценария оболочки. Более того, я использую $ {PREFIX} / share / man для пути к man-странице, и это не правильно для всех систем, например FreeBSD, кажется, устанавливает сторонние man-страницы в / usr/ local / man (то есть нет share / ).

Есть ли более элегантные способы сделать это?

Ответы [ 2 ]

2 голосов
/ 09 октября 2011

distutils не поддерживает справочные страницы. Люди написали расширения для их поддержки, как правило, в форме специальной команды distutils. Смотрите, например, python-distutils-extra из Ubuntu.

distutils2 будет поддерживать установку man-страниц.

2 голосов
/ 14 сентября 2010

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

Вы можете сделатьэто так:

class lc_install(install):
    description = "Custom Install Process"

    user_options= install.user_options[:]
    user_options.extend([('manprefix=', None, 'MAN Prefix Path')])

def initialize_options(self):
    self.manprefix = None
    install.initialize_options(self)
def finalize_options(self):
    if self.manprefix is None :
        self.manprefix = "DEFAULT MAN PREFIX PATH IF THE OPTION IS NOT SET"
    install.finalize_options(self)

def run(self):
    .... # Your run method
...