diff --git a/manual_trading_hub/ecosystem.config.cjs b/manual_trading_hub/ecosystem.config.cjs index 44a954e..32bee98 100644 --- a/manual_trading_hub/ecosystem.config.cjs +++ b/manual_trading_hub/ecosystem.config.cjs @@ -59,6 +59,9 @@ module.exports = { autorestart: true, watch: false, max_memory_restart: "512M", + env: { + PYTHONPATH: REPO_ROOT, + }, }, ], }; diff --git a/manual_trading_hub/hub.py b/manual_trading_hub/hub.py index 9805fbf..c75b76d 100644 --- a/manual_trading_hub/hub.py +++ b/manual_trading_hub/hub.py @@ -6,8 +6,13 @@ from __future__ import annotations import asyncio import os +import sys from pathlib import Path +_REPO_ROOT = Path(__file__).resolve().parent.parent +if str(_REPO_ROOT) not in sys.path: + sys.path.insert(0, str(_REPO_ROOT)) + from env_load import load_hub_dotenv load_hub_dotenv() diff --git a/manual_trading_hub/scripts/run_hub.sh b/manual_trading_hub/scripts/run_hub.sh index d35d01e..130ca0a 100644 --- a/manual_trading_hub/scripts/run_hub.sh +++ b/manual_trading_hub/scripts/run_hub.sh @@ -4,6 +4,8 @@ set -e set -o pipefail HUB_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +REPO_ROOT="$(cd "${HUB_DIR}/.." && pwd)" +export PYTHONPATH="${REPO_ROOT}${PYTHONPATH:+:${PYTHONPATH}}" cd "${HUB_DIR}" # shellcheck source=lib_load_dotenv.sh diff --git a/manual_trading_hub/常见问题.md b/manual_trading_hub/常见问题.md index f19392f..9b55e73 100644 --- a/manual_trading_hub/常见问题.md +++ b/manual_trading_hub/常见问题.md @@ -144,6 +144,7 @@ cd manual_trading_hub && pm2 restart manual-agent-gate manual-agent-gate-bot |------|------| | 对应 `crypto_*` Flask 未启动 | `pm2 restart crypto_gate` 等 | | 未注册 `hub_bridge` | 启动日志勿含 `[hub_bridge] ImportError`;仓库根需在 `PYTHONPATH`(各实例 `ecosystem.config.cjs` 已配 `PYTHONPATH=..`) | +| 中控 `ModuleNotFoundError: hub_auth` | 确认仓库根存在 `/opt/crypto_monitor/hub_auth.py`(`git pull`);`run_hub.sh` / PM2 已设 `PYTHONPATH=仓库根`;`pm2 restart manual-trading-hub` | | `HUB_BRIDGE_TOKEN` 不一致 | 中控 `.env` 与四实例 `.env` 设相同令牌,或实例 `APP_AUTH_DISABLED=true`(仅建议本机) | ```bash