13

(願わくば) 一般的な慣行に従って、ここscriptsで見られるように、別のディレクトリにいくつかのモジュールと実行可能スクリプトを含む Python パッケージがあります。

スクリプトのドキュメントは、optparse によって提供される自動生成されたヘルプとは別に、パッケージ ドキュメントと一緒に Sphinx サブディレクトリにあります。私は。。をしようとしています:

  1. 既存のドキュメントからスクリプトのマニュアル ページを生成する
  2. 配布物にマニュアルページを含める

スフィンクス、man_pages設定、およびsphinx-build -b man. したがって、呼び出しpython setup.py build_sphinx -b manてディレクトリに man ページを生成することができますbuild/sphinx/man

生成された man ページをディストリビューション tarball に含めて、GNU/Linux パッケージャーが見つけて適切な場所にインストールできるようにしたいと考えています。man ページは Sphinx によって生成されるまで存在しないため、ここではさまざまなオプションが機能package_dataしないようです。.moこれは、i18n ファイル ( vsファイル)にも適用できます.po

ソースの一部ではないファイルを含めることはMANIFEST.in正しくないようです。生成されたファイルをソース リポジトリにコミットする可能性は、ひどいことのように見えるので、避けたいと思います。

それを行う明白な方法が 1 つ (できれば 1 つだけ) ある必要があります。

4

4 に答える 4

1

おそらく distutils.core.setup を呼び出す前に、setup.py に man ページを生成させます。あるレベルの setup.py は Python コードであることを思い出してください。sphinx がインストールされていない場合でも (sphinx が必要な場合を除き)、動作することをテストして確認したいと考えています。そのため、man ページが既に存在し、sphinx が利用できない場合でも失敗しません。そうすれば、sphinx を使用せずにソース配布を解凍した人でも、setup.py ビルドやその他のターゲットを実行できます。

もう 1 つのオプションは、man ページをチェックインすることですが、あなたと同じように、私はそれが醜いと思います。

于 2013-11-21T01:30:18.563 に答える
0

私が以前に行ったことは、ドキュメントのビルド ターゲットを提供し、ドキュメントにマニュアル ページが含まれており、そのビルド ターゲットを実行することでビルドできることを README ファイルで明確にすることです。次に、パッケージのメンテナーがドキュメントを作成し、パッケージ作成プロセス中にパッケージ化します。

たとえば、hawkey用の fedora 18 rpm は、この方法でビルドされます。ソースのビルドと同時にドキュメントをビルドし、それをパッケージ化するというモデルに従っている他の rpm も見てきました。

于 2013-04-06T15:57:27.720 に答える
0

この質問は、この問題がしばらくの間私を悩ませているという理由だけでなく、より良い答えに値します. これが私の実装です。

  • build_manpage.py私の github プロジェクトからダウンロードします (ここに build_manpage へのリンクがあります) 。
  • setup.py にインポートできる場所に保存します。

    # inside setup.py
    from setuptools import setup
    from build_manpage import BuildManPage
    
    ...
    ...
    
    setup(
    ...
    ...
    cmdclass={
    'build_manpage': BuildManPage,
    )
    

setup.pyこれで、次のように呼び出すことができます。

$ python setup.py build_manpage --output=prog.1 --parser=yourmodule:argparser
于 2014-06-11T17:32:11.160 に答える