首先找到旧服务器要迁移的环境的目录
- 输入
conda env list
就能看见如下输出了
(base) root@autodl-container-c1a240af40-e064c9ed:~/autodl-tmp/work/lip_alignment# conda env list
# conda environments:
#
PRO_NAME /root/autodl-tmp/conda/envs/PRO_NAME
wav2lip /root/autodl-tmp/conda/envs/wav2lip
比如这里我的旧环境叫做wav2lip
,直接去到该路径把 wav2lip
整个压缩
然后直接下载下来,接下来把这个压缩包移植到你新服务器对应的conda默认存放envs的地方,然后你conda env list
就能看到你的新环境了,但是pip list
肯定不行,这时候你可以输入:
cat /root/autodl-tmp/conda/envs/easy-wav2lip/bin/pip
查看你pip执行文件的头
这里肯定是显示的你旧的服务器的那个bin的路径,如果你新服务也是这个路径就没问题,如果新服务器存放conda envs的地方变了就用一个脚本批量转换一下:
批量转换
编写一个脚本替换该环境中老的解释器路径
vim fix_shebangs.sh
下面的OLD_PATH是旧服务器的环境执行地址,下面NEW_PATH是新服务器的地址,记得改成你自己的!!!
#!/bin/bash
# 设置旧的和新的 Python 解释器路径
OLD_PATH="/root/miniconda3/envs/wav2lip/bin/python"
NEW_PATH="/root/autodl-tmp/conda/envs/wav2lip/bin/python"
# 遍历环境中的所有可执行文件
for file in /root/autodl-tmp/conda/envs/easy-wav2lip/bin/*; do
if [[ -f $file && -x $file ]]; then
# 读取文件的前一行
head -n 1 "$file" | grep -q "$OLD_PATH"
if [[ $? -eq 0 ]]; then
echo "Updating shebang in $file"
sed -i "1s|$OLD_PATH|$NEW_PATH|" "$file"
fi
fi
done
echo "Shebangs updated."
- 添加权限
chmod +x fix_shebangs.sh
- 执行
./fix_shebangs.sh