# Interpreter Process Configuration ## 修正済み: 環境に依存しない動的パス設定 ### 概要 `process.py`のBASE_PATH設定が固定値だったため、異なる環境でエラーが発生していた問題を修正しました。現在は環境に応じて動的にパスを設定します。 ### 自動検出される環境 1. **環境変数での設定** (最優先) ```bash export INTERPRETER_BASE_PATH="/custom/path/to/controller/" ``` 2. **GitHub Codespaces環境**: `/workspaces/` を含むパス - 自動設定: `{current_dir}/app/Http/controller/` 3. **Docker環境**: `/home/user/app/` パスで実行 - 自動設定: `/home/user/app/app/Http/controller/` 4. **ローカル開発環境**: `fastapi_django_main_live` を含むパス - 自動設定: `{current_dir}/app/Http/controller/` 5. **フォールバック環境**: 上記以外 - 自動設定: `{current_dir}/temp_controller/` ### 修正内容 #### 1. 動的パス検出の実装 ```python def get_base_path(): """環境に応じて動的にベースパスを取得""" # 環境変数チェック # 現在のディレクトリ分析 # 適切なパス生成 # フォールバック処理 ``` #### 2. 安全な初期化 ```python # 遅延初期化でimport時エラーを回避 BASE_PATH = None def get_base_path_safe(): global BASE_PATH if BASE_PATH is None: BASE_PATH = get_base_path() return BASE_PATH ``` #### 3. 堅牢なエラーハンドリング ```python def ensure_base_path_exists(): # パス作成の試行 # 書き込み権限確認 # フォールバック処理 # 詳細なログ出力 ``` ### 使用例 #### 通常の使用(自動検出) ```python from mysite.interpreter.process import ensure_base_path_exists, get_base_path_safe # パスの確認と作成 if ensure_base_path_exists(): base_path = get_base_path_safe() print(f"Base path ready: {base_path}") ``` #### 環境変数での設定 ```bash # .env ファイルまたはシェル export INTERPRETER_BASE_PATH="/workspace/my_project/controllers/" # Python from mysite.interpreter.process import get_base_path path = get_base_path() # 設定された環境変数を使用 ``` #### Docker環境での使用 ```dockerfile ENV INTERPRETER_BASE_PATH="/app/controllers/" ``` #### Codespaces環境での使用 ```json // .devcontainer/devcontainer.json { "containerEnv": { "INTERPRETER_BASE_PATH": "/workspaces/fastapi_django_main_live/app/Http/controller/" } } ``` ### トラブルシューティング #### 権限エラーの場合 ```bash # ディレクトリを手動作成 mkdir -p /path/to/controller chmod 755 /path/to/controller # 環境変数設定 export INTERPRETER_BASE_PATH="/path/to/controller/" ``` #### パス確認方法 ```python from mysite.interpreter.process import get_base_path_safe print(f"Current BASE_PATH: {get_base_path_safe()}") ``` #### 設定検証スクリプト ```bash cd /workspaces/fastapi_django_main_live python verify_process_fix.py ``` ### ログの確認 ```python from mysite.logger import logger # 現在のベースパスを確認 from mysite.interpreter.process import get_base_path_safe logger.info(f"Current BASE_PATH: {get_base_path_safe()}") ``` ### 既知の問題と解決策 #### 問題: ImportError **原因**: Django設定が正しく読み込まれていない **解決策**: ```python import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') import django django.setup() ``` #### 問題: 権限エラー **原因**: ディレクトリへの書き込み権限がない **解決策**: 環境変数で書き込み可能なパスを指定 #### 問題: パスが見つからない **原因**: 自動検出が失敗 **解決策**: INTERPRETER_BASE_PATH環境変数を明示的に設定 ### テスト方法 1. **基本テスト** ```bash python verify_process_fix.py ``` 2. **Django環境でのテスト** ```bash python manage.py shell -c "from mysite.interpreter.process import get_base_path; print(get_base_path())" ``` 3. **カスタムパステスト** ```bash export INTERPRETER_BASE_PATH="/tmp/test_path/" python verify_process_fix.py ```