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