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開発」をフックして追加の要件セットをインストールする方法がありますか?私が読んでいない別の方法は?
setup.py
対requirements.txt
の使用に関する詳細については、 この記事 が役立ちました。
開発専用パッケージのインストールにrequirements.txt
(元の回答を参照)を使用しなくなりました。一般的な知恵は、requirements.txt
を使用して特定のバージョン番号に展開を固定する必要があるということです。通常はpip freeze > requirements.txt
を使用します。これにより、プロジェクトの依存関係とプロジェクトの依存関係の依存関係のまったく同じバージョンがすべてのサーバーにインストールされます。
代わりに、setup
にextras_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_require
のdev
セクションにリストされているすべての通常の必須パッケージおよびがインストールされます。
python setup.py install
またはpip install .
(またはrequirements.txt
ファイル)を使用して、実稼働インストールを引き続き実行できます。
これはaの方法で、setup.py
対requirements.txt
に関して私が遭遇した推奨事項に沿っているようです。 install_requires
のsetup.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
にリストされている依存関係のみをインストールします。