run.sh 919 B

1234567891011121314151617181920212223242526272829303132
  1. #!/usr/bin/env bash
  2. # 启动 3D 服务端(自动选用当前 conda/venv 环境的解释器,避免 PATH 缓存到系统 python)。
  3. #
  4. # 用法:
  5. # bash 3d/backend/run.sh # 默认 127.0.0.1:5182
  6. # bash 3d/backend/run.sh --reload
  7. # bash 3d/backend/run.sh --port 5182
  8. set -e
  9. DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  10. ROOT="$(cd "$DIR/../.." && pwd)"
  11. pick_python() {
  12. if [ -n "${CONDA_PREFIX:-}" ] && [ -x "$CONDA_PREFIX/bin/python" ]; then
  13. echo "$CONDA_PREFIX/bin/python"
  14. return
  15. fi
  16. if [ -x "$ROOT/.venv/bin/python" ]; then
  17. echo "$ROOT/.venv/bin/python"
  18. return
  19. fi
  20. command -v python || command -v python3
  21. }
  22. PY="$(pick_python)"
  23. if ! "$PY" -c "import fastapi, uvicorn" >/dev/null 2>&1; then
  24. echo "[run.sh] 解释器 $PY 缺少依赖,正在安装 requirements.txt ..." >&2
  25. "$PY" -m pip install -r "$DIR/requirements.txt"
  26. fi
  27. exec "$PY" "$DIR/run.py" "$@"