質問: ### 質問 python プロジェクトにおいて、基準のディレクトリを参照する設定・規約について、一般的なものはありますか? ### 背景 例えば Rails では、そのフレームワークに乗っかってコードを書く場合、 `Rails.root` という変数が参照可能で、それはプロジェクトのルートディレクトリが参照できます。例えば、 `Rails.root / 'config' / 'foo_setting.yml'` とすると、「プロジェクトルート/config/foo_setting.yml」のパスに解決が可能です。 今、 python のプロジェクトを開発していて、そこでコード中において「プロジェクトルート/conf/sqlalchemy.yml」ファイルの中身を参照したくなりました。毎回、そのパスを利用するコードにおいて、相対パスで指定してやれば参照は可能そうですが、しかし、コード中の相対パスは、コードベースが発展するに従い構造化され、その際に(コードファイル自体の移動により)変更を行う必要がありそうだ、と思っています。 なので、「プロジェクトルートからの相対パス」をアプリケーションのコード中で解決したいと思ったのですが、これは一般的 python プロジェクトにおいてどのように実装されますか?
回答: > > python プロジェクトにおいて、基準のディレクトリを参照する設定・規約について、一般的なものはありますか? > > > 質問の趣旨から外れている気もしますが、ディレクトリ構成の「推奨?」を見つけました。 * Repository Structure and Python > > 「プロジェクトルートからの相対パス」をアプリケーションのコード中で解決したいと思ったのですが、これは一般的 python プロジェクトにおいてどのように実装されますか? > > > Python-ルートプロジェクト構造のパスを取得のページを見つけました。 `utils.py`で`def get_project_root() -> Path:`を定義するというものです。 一般的かは分かりませんが、よい方法だと思いました。 「変更が予想されている、変更があると対応が大変」な場合はトップレベルの設定ファイルに個別設定ファイルのパスを定義しておいてはいかがでしょうか。 小規模なプロジェクトであれば「ディレクトリ階層をシンプルに保つ」でよいと思います。 設定ファイルと定義、参照については以下が参考になると思います。 * configparser --- 設定ファイルのパーサー