1

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 スクリプトの両方で同じ動作を再現できるはずです。

4

0 に答える 0