web-dev-qa-db-ja.com

配布/セットアップツールパッケージの 'tests_require'依存関係をインストールする場所を指定する

python setup.py testを実行すると、setup.pyのtests_requireにリストされている依存関係が現在のディレクトリにダウンロードされます。 python setup.py installを実行すると、代わりにrequiresにリストされている依存関係がsite-packagesにインストールされます。

代わりにtests_requireにこれらのsite-packages依存関係をインストールするにはどうすればよいですか?

43
Danny Navarro

テスト要件がインストールされている場所を指定することはできません。 tests_requireパラメータの要点は、パッケージのインストールに必要ではなく、テストの実行にのみ必要な依存関係を指定することです(多くのコンシューマがパッケージをインストールしたいがテストを実行しないことを想像できるため)。インストール中にテスト要件を含めたい場合は、install_requiresパラメータに含めます。例えば:

test_requirements = ['pytest>=2.1', 'dingus']
setup(
    # ...
    tests_require = test_requirements,
    install_requires = [
        # ... (your usual install requirements)
    ] + test_requirements,
)

私の知る限り、セットアップスクリプトを変更せずにこの動作を強制するために渡すことができるパラメーターはありません。

48
Jason R. Coombs

Virtualenvを使用してこれを回避し、追加パッケージをlib/pythonX/site-packages内のデフォルトの場所にインストールできます。最初に、setup.pyでテスト要件をエクストラとして定義する必要があります。

setup(
    # ...
    install_requires=[
        # ... (your usual install requirements)
    ],
    extras_require={
        'testing': [
            # ... (your test requirements)
        ]
    },
)

次に、次のようなテスト要件でパッケージをインストールします。

pip install -e ".[testing]"
22
Tiberiu Ichim

そのようなことを達成するためにpipを使用しています。 tests_requiresまたはextrasをsetup.pyに追加する代わりに、 pip要件ファイル を作成しました。

私のdev_requirements.txtファイルの例:

pytest
webtest

次に、それをインストールするために実行します:

$ pip install -r dev_requirements.txt
15
schettino72