Hydra アプリケーションをパッケージ化し、エントリ ポイントとしてスクリプトを含めると、どこからでもコマンド ラインからスクリプトを呼び出すことができます。スクリプトが呼び出されると、パッケージに含まれていた構成が利用されます。別の構成をスクリプトに渡すことができるように構成検索パスを変更する方法はありますか?
例えば:
app.py
import hydra
@hydra.main(config_path="conf", config_name="config")
def my_func(cfg):
print(cfg)
config.yaml
key: value
another_key: second_value
でこのパッケージを作成してインストールしますentry_points={"console_scripts": ["hydra_app_test = hydra_app_test.app:my_func"]}
。
$ hydra_app_test
{'key': 'value', 'another_key': 'second_value'}
ローカル構成を定義してに渡すことができるようにしたいと思いますhydra_test_app
。このようなことは可能ですか?
some/config/path/config.yaml
key: not_value
mon: key
$ hydra_app_test --config-override=some/config/path
{'key': 'not_value', 'mon': 'key'}
--config-dir
とオーバーライドを使用してみました--config-path
が、うまくいきませんでした。
$ hydra_app_test --config-dir=some/config/path
{'key': 'value', 'another_key': 'second_value'}
$ hydra_app_test --config-path=some/config/path
Primary config module 'hydra_app_test.some.config.path' not found.
Check that it's correct and contains an __init__.py file
興味深いことに、このパターンは、インストールされたアプリを使用せずに app.py をスクリプトとして (必要なif __name__ == "__main__"
ロジックを使用して)実行すると機能します。
python path/to/app.py --config-path=some/config/path
{'key': 'not_value', 'mon': 'key'}
おそらく、ここで何かが欠けているだけかもしれませんが、インストールされたパッケージ スクリプトと python スクリプトの両方で同じ動作を再現できるはずです。