换台电脑克隆后启动失败,是因为 site 和启动脚本写死了 /home/cc/ros2。仓库内路径改成相对仓库根,加载时再展开;缺 install 时先说明要编译,而不是 source 一个不存在的文件。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# 本机工具链。仓库位置用调用方已经算好的 ROOT,不写死某个用户的家目录。
|
||||
# 用法:source "${ROOT}/scripts/lib/dev_tools.sh"
|
||||
|
||||
dev_source_conda() {
|
||||
local cand
|
||||
for cand in \
|
||||
"${HOME}/anaconda3/etc/profile.d/conda.sh" \
|
||||
"${HOME}/miniconda3/etc/profile.d/conda.sh"
|
||||
do
|
||||
if [[ -f "${cand}" ]]; then
|
||||
# shellcheck disable=SC1090
|
||||
source "${cand}"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
echo "ERROR: 找不到 conda.sh。试过 \$HOME/anaconda3 和 \$HOME/miniconda3。" >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
dev_rdk_python() {
|
||||
if [[ -n "${RDK_PYTHON:-}" && -x "${RDK_PYTHON}" ]]; then
|
||||
printf '%s\n' "${RDK_PYTHON}"
|
||||
return 0
|
||||
fi
|
||||
if [[ -x "${HOME}/rdk_py310/bin/python" ]]; then
|
||||
printf '%s\n' "${HOME}/rdk_py310/bin/python"
|
||||
return 0
|
||||
fi
|
||||
echo "ERROR: 找不到 RDK 的 Python。设置 RDK_PYTHON,或装到 \$HOME/rdk_py310。" >&2
|
||||
return 1
|
||||
}
|
||||
@@ -42,7 +42,13 @@ def load_site(path: Path | None = None) -> dict:
|
||||
data = yaml.safe_load(text) or {}
|
||||
if not isinstance(data, dict):
|
||||
raise ValueError(f"无效的 site.yaml: {path}")
|
||||
return data
|
||||
# 相对路径按仓库根展开。site.yaml 里不再写 /home/某用户/ros2。
|
||||
src = str(_root() / "src" / "arm_application")
|
||||
if src not in sys.path:
|
||||
sys.path.insert(0, src)
|
||||
from arm_application.site_io import absolutize_site_paths
|
||||
|
||||
return absolutize_site_paths(data, _root())
|
||||
|
||||
|
||||
def list_robots(data: dict) -> list[dict]:
|
||||
|
||||
@@ -55,7 +55,15 @@ LEVEL_FAIL = "fail"
|
||||
#: 级别排序:fail 最先报
|
||||
_LEVEL_RANK = {LEVEL_FAIL: 0, LEVEL_WARN: 1, LEVEL_OK: 2}
|
||||
|
||||
DEFAULT_RDK_PYTHON = os.environ.get("RDK_PYTHON") or "/home/cc/rdk_py310/bin/python"
|
||||
def default_rdk_python() -> str:
|
||||
"""RDK 解释器。环境变量优先,否则用当前用户家目录下的 rdk_py310。"""
|
||||
env = os.environ.get("RDK_PYTHON", "").strip()
|
||||
if env:
|
||||
return env
|
||||
return str(Path.home() / "rdk_py310" / "bin" / "python")
|
||||
|
||||
|
||||
DEFAULT_RDK_PYTHON = default_rdk_python()
|
||||
|
||||
#: 上一轮没退干净的进程特征。留着它们会让这一轮的错误指向别处:
|
||||
#: · ros2_control_node 占着 RDK(同一个 SN 是独占访问)
|
||||
|
||||
Reference in New Issue
Block a user