|
|
@@ -2,7 +2,7 @@
|
|
|
"""启动 3D 服务端。
|
|
|
|
|
|
用法:
|
|
|
- python3 3d/backend/run.py # 默认 127.0.0.1:8000
|
|
|
+ python3 3d/backend/run.py # 默认 127.0.0.1:5182
|
|
|
python3 3d/backend/run.py --port 9100 --reload
|
|
|
"""
|
|
|
|
|
|
@@ -10,15 +10,41 @@ import argparse
|
|
|
import sys
|
|
|
from pathlib import Path
|
|
|
|
|
|
-import uvicorn
|
|
|
+BASE_DIR = Path(__file__).resolve().parent
|
|
|
+sys.path.insert(0, str(BASE_DIR))
|
|
|
|
|
|
-sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
|
+
|
|
|
+def _require_dependencies() -> None:
|
|
|
+ missing = [name for name in ("fastapi", "uvicorn") if _importable(name) is None]
|
|
|
+ if not missing:
|
|
|
+ return
|
|
|
+ req = BASE_DIR / "requirements.txt"
|
|
|
+ sys.stderr.write(
|
|
|
+ "\n[启动失败] 当前 Python 缺少依赖: " + ", ".join(missing) + "\n"
|
|
|
+ f" 当前解释器: {sys.executable}\n"
|
|
|
+ f" 版本: {sys.version.split()[0]}\n"
|
|
|
+ f" 安装依赖: {sys.executable} -m pip install -r {req}\n"
|
|
|
+ "\n提示:如果 `python3` 指向系统解释器(如 /usr/bin/python3),\n"
|
|
|
+ "请先激活项目环境(conda activate compressor-wave),\n"
|
|
|
+ "或用 conda run -n compressor-wave python3 3d/backend/run.py 运行。\n",
|
|
|
+ )
|
|
|
+ raise SystemExit(1)
|
|
|
+
|
|
|
+
|
|
|
+def _importable(name: str):
|
|
|
+ try:
|
|
|
+ return __import__(name)
|
|
|
+ except ImportError:
|
|
|
+ return None
|
|
|
|
|
|
|
|
|
def main() -> None:
|
|
|
+ _require_dependencies()
|
|
|
+ import uvicorn
|
|
|
+
|
|
|
parser = argparse.ArgumentParser(description="压缩机 3D 部件查看服务")
|
|
|
parser.add_argument("--host", default="127.0.0.1")
|
|
|
- parser.add_argument("--port", type=int, default=8000)
|
|
|
+ parser.add_argument("--port", type=int, default=5182)
|
|
|
parser.add_argument("--reload", action="store_true")
|
|
|
args = parser.parse_args()
|
|
|
|