使用云服务器,home目录挂载的盘空间很小,在home目录下安装了Anaconda之后,随着使用中,在huggingface上下载了很多预训练大语言模型,硬盘空间爆掉了。购入新的更大的存储空间,但不想重新安装系统和Anaconda,就把Anconda整个文件夹移入新的目录中了,
原本以为移入新目录后,只需要将对应的python 环境变量改成新路径就好。但改之后,conda命令都识别不了。各种捣腾之后,改了好几个文件,终于ok了。
下面是具体的步骤
1.检查~/.bashrc和/etc/profile中是否有python 环境变量的定义。
我自己的conda是在~/.bashrc做初始化的,初始化内容如下
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('ANACONDA_PATH/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "ANACONDA_PATH/etc/profile.d/conda.sh" ]; then
. "ANACONDA_PATH/etc/profile.d/conda.sh"
else
export PATH="ANACONDA_PATH/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
将里面所有的ANACONDA_PATH从原来的绝对路径改成现有的绝对路径。
2.Anaconda内部的环境变量定义文件修改
从~/.bashrc中的段代码可以看出,初始化时,首先查询conda自身的定义文件etc/profile.d/conda.sh是否存在,如果存在就执行这个sh文件,如果不存在才直接定义环境变量。
ANACONDA_PATH/etc/profile.d中一共有两个shell文件:conda.sh和conda.csh。两个文件都包含了conda绝对路径的定义
Conda.sh需要修改的有
export CONDA_EXE='ANACONDA_PATH/bin/conda'
export CONDA_PYTHON_EXE='ANACONDA_PATH/bin/python'
Conda.csh有
setenv CONDA_EXE "ANACONDA_PATH/bin/conda"
setenv _CONDA_ROOT "Anaconda_path"
setenv _CONDA_EXE "ANACONDA_PATH/bin/conda"
setenv CONDA_PYTHON_EXE "ANACONDA_PATH/bin/python"
同样,将ANACONDA_PATH替换成新的路径。
以上两步改完之后,执行一次source ~/.bashrc就可以正确读到anaconda中的文件了。
3.改完之后,执行conda activate命令,总算不再报“找不到conda命令”了,但是会报
bash: NEW_ANACONDA_PATH/bin/conda:OLD_ANACONDA_PATH/bin/python: bad interpreter: No such file or directory
这是conda命令内部的路径读取有问题,于是查看vim ANACONDA_PATH/bin/conda文件,替换第一句中的路径
#!ANACONDA_PATH/bin/python
bin文件夹中存了很多命令的配置文件,需要用的的都需要修改,像pip, jupyter, jupyter-lab等。不用一次改完,只需要记得如果调用哪个命令,出现找不到文件的时候,去bin里面对这个命令的配置文件进行修改就行。
到此,Anaconda迁移成功。