4

単純な Python モジュールを作成し、それを pip で配布したいと考えています。また、モジュールと一緒に Bash 補完ファイルもインストールしたいと考えています。モジュールを Python 2.7.1+ および pip 0.8.2 でインストールしています。

私はこのsetup.pyを持っています:

setup(
    name='jenkinsmon',
    version='0.0.1',
    description='Jenkins Job Monitor',
    long_description=open('README.txt').read(),
    scripts=['bin/jenkinsmon'],
    data_files=[
        ('/etc/bash_completion.d', ['extras/jenkinsmon.completion']),
    ],
    install_requires = [
        'autojenkins',
        'argparse'
    ],
)

でパッケージをインストールしようとするとpip install -e .、Bash 補完ファイルがパッケージと一緒にインストールされることはありません。ここで説明されているように、MANIFEST.in を指定して回避策も試しました。

MANIFEST.in:

include extras/jenkinsmon.completion

しかし、これも役に立ちません。補完ファイルがインストールされません。Bash 補完ファイルをインストールするにはどうすればよいですか?

4

2 に答える 2

1

MANIFEST.in は、ソース配布に含まれる追加ファイルのみを記述します。インストールとは関係ありません。

を実行すると、ファイルはインストールされますpython setup.py installか? pip は setuptools に依存しているため、すべてを 1 つの「egg」ディレクトリ/zip ファイルにインストールするという動作を継承している可能性があります。

于 2012-03-31T22:59:27.800 に答える
0

私のエラー(一般的にpipドキュメントを読まないことに加えて)は-epip installパラメーターに追加することでした。これは、「編集可能」モードでインストールすることを意味します。ドキュメントを引用するには

--editable または -e オプションを使用すると、pip はバージョン管理リポジトリから直接インストールできます (現在、Subversion、Mercurial、Git、および Bazaar をサポートしています)。

pip install -e svn+http://svn.colorstudy.com/INITools/trunk#egg=initools-dev

このオプションは、それぞれの VCS のコマンドライン クライアントにシェルアウトするため、システムに VCS がインストールされている必要があります。リポジトリ URL は svn+ (または hg+、git+、または bzr+) で始まり、#egg=packagename; で終わる必要があります。それ以外の場合、pip は、VCS 自体がサポートするのと同じ URL 形式とワイヤ プロトコルをサポートします。

Pip はソース リポジトリを virtualenv 内の src/ ディレクトリ (つまり pip_test_env/src/initools-dev) にチェックアウトし、そのソース リポジトリで python setup.py development を実行します。これにより、リポジトリから virtualenv の site-packages ディレクトリにコードが直接「リンク」されるため (リポジトリ ディレクトリを easy-install.pth に追加することにより)、ソース チェックアウトで行った変更がすぐに有効になります。

引き続き使用したいローカル VCS チェックアウトが既にある場合は、 pip install -e path/to/repo を使用して、同じ方法で「編集可能」にインストールできます。

したがって、パッケージをシステムに永続的にインストールするには、-r を削除する必要があります。そうすれば、Bash 補完ファイルが期待どおりにインストールされます。

于 2012-04-04T17:26:50.513 に答える