1. 开启代理
执行proxy_on
如果git没有走代理,就配置一下,找到端口号,是不是7890
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
2. clone代码
git clone --recurse-submodules https://github.com/Physical-Intelligence/openpi.git
直接下载如果失败,可能是卡在 LIBERO 这个子模块,主模块已经下载成功了,
那就切换到
cd ~/sda/hj/openpi/third_party
手动执行:
git clone https://github.com/Lifelong-Robot-Learning/LIBERO.git
👉 如果失败,多试几次(因为你刚刚第二次其实已经开始成功了)
然后回到主目录:
cd ~/sda/hj/openpi
git submodule update --init --recursive
** 如果下载出现了2个libero,需要删除那个坏掉的,再问GPT吧**
python
很好,这个现象其实很典型 👍
👉 你现在的目录:
```bash
aloha libero LIBERO
👉 出现了 两个"libero",原因很明确:
🔴 本质原因
👉 一个是 Git submodule 自动创建的
👉 一个是你手动 clone 的
📦 具体对应关系
1️⃣ libero(小写)
👉 这是 openpi 自带的 submodule 目录
路径:
bash
third_party/libero
特点:
- 由
git submodule管理 - ❌ 你之前下载失败 → 半残状态
- 👉 就是你报错的那个
2️⃣ LIBERO(大写)
👉 这是你刚刚手动 clone 的:
bash
git clone https://github.com/Lifelong-Robot-Learning/LIBERO.git
特点:
- ✔ 完整仓库(或浅克隆)
- ✔ 是正常可用的
⚠️ 为什么会出问题?
👉 Linux 是区分大小写的:
libero≠LIBERO
👉 但 openpi 代码里写的是:
bash
third_party/libero
👉 所以:
- ❌ 它不会用你手动下载的
LIBERO - ❌ 还是会用那个坏掉的
libero
✅ 正确处理方式(关键)
👉 你需要 用好的覆盖坏的
🚀 标准做法(推荐)
bash
cd ~/sda/hj/openpi/third_party
# 1️⃣ 删除坏的
rm -rf libero
# 2️⃣ 把好的改名
mv LIBERO libero
✅ 然后验证
bash
ls
应该变成:
bash
aloha libero
✅ 最后同步 submodule(很重要)
bash
cd ~/sda/hj/openpi
git submodule update --init --recursive
👉 这一步是为了:
- 确保 commit 对齐
- 避免后续报错
⚠️ 一个潜在坑(你下一步可能遇到)
如果之后报错:
bash
fatal: reference is not a tree
👉 说明:
- openpi 需要的 commit
- 不在你浅克隆的历史里
👉 解决:
bash
cd third_party/libero
git fetch --unshallow
👍 一句话总结
👉 你现在的情况是:
"submodule坏了 + 手动clone了一份新的,但路径不对"
👉 正确做法:
✔ 删掉旧的 libero
✔ 把 LIBERO 改名为 libero
📩 如果你下一步要跑 openpi / LIBERO
我可以帮你把:
👉 环境 → 数据集 → 仿真 → 训练
一条链直接跑通(你现在已经到关键一步了 👍)
pip的镜像地址使用https://pypi.tuna.tsinghua.edu.cn/simple