Linux环境下conda虚拟环境的迁移

前言

  本篇文章主要介绍如何将服务器A上的conda环境迁移到服务器B上,并解决使用clear指令时出现terminals database is inaccessible的问题。

1. 虚拟环境迁移

  虚拟环境迁移的前提是服务器B上已经安装了anaconda,只需将需要迁移的虚拟环境的包复制到服务器B上,然后执行如下指令即可:

conda create --name new_env_name(B) --clone your_env_path(B)

2. 整体迁移

  整体迁移是将整个anaconda安装包(包括里面的所有虚拟环境)迁移到另一个服务器上,具体配置如下:

在这里插入图片描述

  说明:目前已经将服务器A上的anaconda安装包及其虚拟环境复制到了服务器B上,并将其重命名为anaconda-li

2.1 修改conda文件

# 修改 anaconda-li/bin/conda 文件中的解释器的路径
# 在 linux 系统,凡是由 #! 注释的,统统是加载器(解释器)的路径,意思是下面的内容由当前指定的解释器执行
vim anaconda3-li/bin/conda

在这里插入图片描述

2.2 修改pip文件

# 修改 anaconda-li/bin/pip 文件中的解释器的路径
vim anaconda3-li/bin/pip
vim anaconda3-li/bin/pip3

在这里插入图片描述

2.3 修改虚拟环境中的pip文件

# 修改虚拟环境中的 pip 文件中的解释器的路径
vim anaconda3-li/envs/intellabs/bin/pip
vim anaconda3-li/envs/intellabs/bin/pip3

在这里插入图片描述

2.4 修改环境变量

# 修改 .bashrc 中 anaconda 的环境变量
# 将原始的 anaconda 路径改成当前 anaconda-li 的路径
vim .bashrc
source .bashrc

在这里插入图片描述

3. terminals database is inaccessible

在这里插入图片描述

  如果在使用clear命令时出现terminals database is inaccessible异常信息,则有可能是anaconda的路径干扰到了指令,在.bashrc文件中最下面添加下面的环境变量即可:

vim .bashrc

export TERM=xterm

source .bashrc

  如果上述操作无效,可以执行下面这条指令重新在该环境下生成:

# 查看 clear 在哪, 一般是在当前环境下的 bin 目录下
which clear

# 备份一下
mv /data/home/liyanpeng/anaconda3/envs/env3090/bin/clear /data/home/liyanpeng/anaconda3/envs/env3090/bin/clear_old 

# 将系统的 clear 复制过来即可
cp /usr/bin/clear /data/home/liyanpeng/anaconda3/envs/env3090/bin/

结束语

# 查看迁移是否成功:
conda info -e

在这里插入图片描述
在这里插入图片描述
  由此可见,迁移是成功的!
  一个conda的知识点:

# 不启动conda的base环境
conda config --set auto_activate_base false

  conda环境在线迁移:

# 导出当前的环境
conda env export > environment.yml
# 创建环境
conda env create -f environment.yml
### 迁移Linux系统的Conda环境到新主机或目录 #### 使用`conda pack`工具迁移环境 为了实现跨机器的Conda环境迁移,可以采用`conda pack`这一方法来打包指定的虚拟环境。此过程涉及几个具体的操作环节,在源计算机上完成打包之后,需将生成的压缩文件转移至目标机器,并在那里解压和激活相应的环境。 对于想要迁移名为`myenv`的环境来说,可以在终端里输入下面这条指令来进行打包操作[^3]: ```bash conda pack -n myenv -o myenv.tar.gz ``` 一旦完成了打包工作,就应当通过合适的手段(比如SCP协议)把得到的`.tar.gz`档案传送到新的操作系统之上。到达目的地以后,继续利用命令行展开已有的归档文件,形成一个新的文件夹结构代表原先的运行时上下文: ```bash mkdir -p ~/myenv && tar -xzf myenv.tar.gz -C ~/myenv ``` 紧接着要做的就是调整一些路径设置以便让这个移植过来的空间能够正常运作于接收端之中。这通常意味着编辑特定脚本来修正任何硬编码的位置依赖项,不过大多数情况下默认情况已经足够良好地支持大部分应用的需求了。最后一步则是注册刚刚建立起来的新空间作为可用选项之一给定用户选择使用[^4]: ```bash source ~/myenv/bin/activate ``` #### 利用YAML文件定义的方式重建环境 另一种可行的办法是从现有的实例导出其完整的软件栈描述文档——即YAML格式的清单列表;随后再依据这份配置记录在异地重新构建完全一致的工作区。这种方式特别适合那些希望保持高度一致性以及可重复性的场景之下。 首先是在原始节点执行以下语句获取当前活动域内的全部组件详情并保存为文本形式[^5]: ```bash conda env export > environment.yml ``` 拿到手后的`.yml`文件同样应该被安全拷贝过去准备实施下一步骤的地方那里去。当一切准备好后,则可以通过读取刚才传递过去的模板信息来着手搭建匹配度极高的副本: ```bash conda env create -f environment.yml ``` 这样做不仅简化了流程而且提高了效率,同时也减少了由于手动干预可能引入的人为错误风险。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏小悠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值