Anaconda3的目录移植

常见问题 admin 发布时间:2024-03-11 浏览:80 次

由于我的系统盘满了, 进行了查杀, 但是始终在/var, /cache, /tmp 等目录下都没找到一个大容量的文件, 最后在/opt目录下发现了Anaconda3, 占用了大概有7GB左右的空间, 这对我只有50GB的寸土寸金的系统盘来说是天大的压力.

文件.png

但是我有一个64T的盘, 挂在到了/home目录下, 最终, 我下定了决心, 打算把这个庞大怪物Anaconda3从/opt目录移植到/home目录来减轻我系统盘的压力. 区区7GB的占用对我64TB的数据盘来说是屁都不是


于是我们开始了折腾之路 ( 彩蛋在最后 ):


首先要把这个(base)给ko! , 让它从我们的视野里消失:

conda deactivate其次, 移动目录:


mv /opt/anaconda3 /home/移植完毕了, 我的系统盘一下子多出了11GB的空间, 哇, 服务器和我终于松了一口气, 


接下来的工作就是: 如何让Anaconda重新活过来, 任何地方随叫随到!!!

为了实现我们的目标我们得修改N个文件, 分别是 ~/.bashrc, conda.sh, conda.csh 和 conda

第一步, 是修改~/.bashrc: 

 ~/.bashrc文件 是在我们当前用户的主目录下, 其修改的是当前用户的一些环境变量配置等等.

比如root用户的话就是在/root/.basrc

比如test-user用户的在, /home/test-user/.bashrc, 这样其中test-user是用户名.

# .bashrc

# User specific aliases and functions

alias rm='rm -i'alias cp='cp -i'alias mv='mv -i'

# Source global definitionsif [ -f /etc/bashrc ]; then        . /etc/bashrcfi

# >>> conda initialize >>># !! Contents within this block are managed by 'conda init' !!__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"if [ $? -eq 0 ]; then    eval "$__conda_setup"else    if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then        . "/opt/anaconda3/etc/profile.d/conda.sh"    else        export PATH="/opt/anaconda3/bin:$PATH"    fifiunset __conda_setup# <<< conda initialize <<<我们只需要 在该文件中的所有 /opt/anaconda3 改成新的地址即可

比如, 我的就是`/home/anaconda3`

.conda.sh 和 conda.csh 都在anaconda3目录下的../etc/profile.d/ 目录下


比如我的就是:


/home/anaconda3/etc/profile.d/conda.sh

/home/anaconda3/etc/profile.d/conda.csh

这两个文件也都一样, 两个都, 同样的把文件中的所有 /opt/anaconda3 改成新的地址即可

比如, 我的就是`/home/anaconda3`.

走到这一步, 我真的着急了, 就记者想召唤它, 结果......:


[root@hm-195 ~]# conda-bash: /home/anaconda3/bin/conda: /opt/anaconda3/bin/python: 坏的解释器: 没有那个文件或目录[root@hm-195 ~]# conda --version-bash: /home/anaconda3/bin/conda: /opt/anaconda3/bin/python: 坏的解释器: 没有那个文件或目录[root@hm-195 ~]# /home/anaconda3/bin/conda --version-bash: /home/anaconda3/bin/conda: /opt/anaconda3/bin/python: 坏的解释器: 没有那个文件或目录它真的让我整不会了.

我左想右想, 终于想明白了, 原来这个所谓的conda可执行文件, 它并不是真正的可执行文件, 它不是一个二进制文件, 它只是个脚本, 真正让它拥有灵魂的还是封神榜第一位的Python.

于是我就打开它了


vim /home/anaconda3/bin/conda

里面居然长这样:

#!/opt/anaconda3/bin/python# -*- coding: utf-8 -*-import sys# Before any more imports, leave cwd out of sys.path for internal 'conda shell.*' commands.# see https://github.com/conda/conda/issues/6549if len(sys.argv) > 1 and sys.argv[1].startswith('shell.') and sys.path and sys.path[0] == '':    # The standard first entry in sys.path is an empty string,    # and os.path.abspath('') expands to os.getcwd().    del sys.path[0]

if __name__ == '__main__':    from conda.cli import main    sys.exit(main())神了, 我们每次召唤的conda 居然只是一个Python的脚本, 这下不就太好操作了吗不是!!!

其内容中不难看出, 也就是第一行的Python解释器的位置还是老的,所以系统就找不到这个解析器, 自然也就无法正常运行了.

我们把它改成, 我们最新anaconda3目录下的python可执行文件的绝度路径来替换一下就好了.

#!/home/anaconda3/bin/python


其实, 还有一个更好的办法, 真的不用去配置这么多东西的. 那也就是, 利用软路由( 软链 ).

一旦, 把anaconda3目录移植到其他盘后, 把新的位置软链到原来的目录地址即可.

ln -s /<new_path>/ancaonda3 /<old-path>/anaconda3


 这样就完事儿!!, 一切大功告成!!, 啥都不用配置!!


在线咨询

点击这里给我发消息售前咨询专员

点击这里给我发消息售后服务专员

在线咨询

免费通话

24h咨询:18221674630


如您有问题,可以咨询我们的24H咨询电话!

免费通话

微信扫一扫

微信联系
返回顶部