web-dev-qa-db-ja.com

Setuptoolsの「開発」要件

TL; DR:setuptoolの 'develop'をフックして、一連の開発要件をインストールするときにpython setup.py develop

Setuptoolsを使用して最初のpythonパッケージを作成しています。要件を次のように指定しています。

requirements = [
    'click',
    'ansible',
    'fabric',
    'gitpython',
    'pyyaml',
    'jinja2',
    'yapsy'
]

test_requirements = [
    'pytest',
    'pytest-pep8',
    'pytest-cov',
]

setup(
...
    install_requires=requirements,
    tests_require=test_requirements,
...
)

開発中に、私はパッケージを(仮想環境で)インストールしてきました:

python setup.py develop

およびアンインストール:

python setup.py develop -u

パッケージは、entry_pointsを使用していくつかのコマンドラインスクリプトをインストールするため、コマンドがセットアップされ、同時にコマンドをテストしながらパッケージを編集できます。

また、開発に使用するいくつかの依存関係もあります... sphinx +拡張機能およびその他のいくつか(パッケージを使用するために必要ではないもの)。現時点では、仮想環境に手動でインストールするだけです。 setuptoolsでそれらを接続する方法についてのドキュメントは表示されませんでした(また、グーグルでの例も見つかりませんでした)。

たぶん、「setup.py開発」をフックして追加の要件セットをインストールする方法がありますか?私が読んでいない別の方法は?

37
nfarrar

setup.pyrequirements.txtの使用に関する詳細については、 この記事 が役立ちました。

更新:2016年9月

開発専用パッケージのインストールにrequirements.txt(元の回答を参照)を使用しなくなりました。一般的な知恵は、requirements.txtを使用して特定のバージョン番号に展開を固定する必要があるということです。通常はpip freeze > requirements.txtを使用します。これにより、プロジェクトの依存関係とプロジェクトの依存関係の依存関係のまったく同じバージョンがすべてのサーバーにインストールされます。

代わりに、setupextras_requireオプションを使用します。

requirements = [
    'click',
    'ansible',
    'fabric',
    'gitpython',
    'pyyaml',
    'jinja2',
    'yapsy'
]

setup({
    install_requires=requirements,
    extras_require={
        'dev': [
            'pytest',
            'pytest-pep8',
            'pytest-cov'
        ]
    }
})

ここで、開発用にパッケージをインストールするには、pip install -e .[dev]を実行します。これにより、extras_requiredevセクションにリストされているすべての通常の必須パッケージおよびがインストールされます。

python setup.py installまたはpip install .(またはrequirements.txtファイル)を使用して、実稼働インストールを引き続き実行できます。

元の回答

これはaの方法で、setup.pyrequirements.txtに関して私が遭遇した推奨事項に沿っているようです。 install_requiressetup.pyパラメーターですべての実動依存関係を指定します。

requirements = [
    'click',
    'ansible',
    'fabric',
    'gitpython',
    'pyyaml',
    'jinja2',
    'yapsy'
]

setup({
    # ...
    install_requires=requirements
    # ...
})

次に、requirements.txtから実稼働の依存関係とテストの依存関係をインストールするようにpipに指示するsetup.pyファイルを作成します。

-e .

pytest
pytest-pep8
pytest-cov

これで、pip install -r requirements.txtを使用して開発用のパッケージをインストールできます。 -e .行は、開発モードでsetup.pyからパッケージとその依存関係をインストールします。本番環境にインストールするには、python setup.py installまたはpip install .を使用できます。これは、setup.pyにリストされている依存関係のみをインストールします。

69
Sean