fix: 用户可见的操作提示统一为 uv run 前缀

项目由 uv 管理,依赖装在 .venv。此前各处的提示语仍写作 `python main.py ...`,用户若在未激活虚拟环境时照抄,会因缺少 fastapi 而失败——这是正确性问题,不只是措辞。

涉及:main.py(12 行,含 prog 与各条 hint)、ai_player.py(5 行)、farm/client.py、farm/server/__main__.py(3 行,含 prog)、farm/server/__init__.py、farm/server/daemon.py、README(4 处示例与目录树注释)。

刻意保留 main.py:26 与 README:49 的「没装 uv?」兜底说明,那里 `python main.py` 是正确写法。

验收:ruff 全通过 / format 26 文件无改动 / pyright 0 错误 / 97 项测试通过。
This commit is contained in:
snowy-yang committed 2026-09-18 21:25:52 +08:00
1 parent d7a7107b0a
commit c414db4217
7 files changed
+27 -27

No files matched your search

+1 -1
View File
@@ -322,7 +322,7 @@ class RemoteFarm:
self.connected = False
raise GameError(
"network",
f"连不上服务器 {self.endpoint}({exc})。请先启动:python main.py serve --daemon",
f"连不上服务器 {self.endpoint}({exc})。请先启动:uv run main.py serve --daemon",
status=503,
) from exc
try:
+1 -1
View File
@@ -13,7 +13,7 @@
* :mod:`farm.server.webui` —— 内嵌网页客户端
``app`` 依赖 FastAPI,而 ``daemon`` 只依赖标准库。为了让
``python main.py stop`` 在没有装 FastAPI 的机器上也能用,这里采用**惰性导出**:
``uv run main.py stop`` 在没有装 FastAPI 的机器上也能用,这里采用**惰性导出**:
真正 import 到用例时才加载对应子模块。
"""
+3 -3
View File
@@ -1,4 +1,4 @@
"""``python -m farm.server`` —— 服务器进程入口(前台运行)。
"""``uv run python -m farm.server`` —— 服务器进程入口(前台运行)。
守护进程模式会由 :class:`farm.server.daemon.DaemonManager` 用同样的命令行
再拉起一个本模块的实例,只是不带 ``--daemon``。
@@ -17,7 +17,7 @@ from .daemon import DEFAULT_LOG_FILE, DEFAULT_PID_FILE, PROJECT_ROOT, DaemonMana
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
prog="python -m farm.server",
prog="uv run python -m farm.server",
description="SimpleFarm 游戏服务器:HTTP 接口给 AI,WebSocket 给实时界面。",
formatter_class=argparse.RawDescriptionHelpFormatter,
)
@@ -50,7 +50,7 @@ def build_parser() -> argparse.ArgumentParser:
parser.add_argument("--access-log", action="store_true", help="打印每个 HTTP 请求")
parser.add_argument("--no-remote-control", action="store_true", help="禁止通过接口停机")
parser.add_argument(
"--daemon", action="store_true", help="转到后台运行(等价于 python main.py serve --daemon)"
"--daemon", action="store_true", help="转到后台运行(等价于 uv run main.py serve --daemon)"
)
parser.add_argument(
"--pid-file", default=None, help="把本进程 pid 写到该文件(守护进程模式会自动指定)"
+1 -1
View File
@@ -231,7 +231,7 @@ class DaemonManager:
f"服务器已在后台启动(pid {pid})\n"
f" 网页 http://{self.host}:{self.port}/\n"
f" 日志 {self.log_file}\n"
f" 停止 python main.py stop"
f" 停止 uv run main.py stop"
)
if process.poll() is not None and self.read_pid() is None:
return False, (