fastapi_django_main_live / docs /INTERPRETER_CONFIG.md
GitHub Action
🚀 Auto-deploy from GitHub Actions
5c5ca8d
# 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
```