anaconda3环境整体打包迁移

anaconda3环境整体打包迁移

一、前言

在开发应用程序或程序时,我们常常需要在本地计算机(具备互联网访问能力)上利用conda创建并配置虚拟环境以进行开发和测试。然而,当开发完成后,我们需要将这个conda虚拟环境迁移到生产环境或内网环境(可能不具备互联网访问条件)。在这个迁移过程中,由于conda安装路径、环境配置等因素与目标内网环境可能存在差异,可能会导致迁移过程不顺畅,进而影响正常部署和使用。

针对这个问题,我结合自己在迁移conda虚拟环境过程中所遇到的问题及相应的解决办法进行了总结,并愿意拿出来与大家共享,共同学习进步。

二、迁移

迁移conda环境分为整体迁移和部分迁移,整体迁移是指把conda整个环境进行打包迁移到新主机,部分迁移是指只迁移自己所创建的虚拟环境。

2.1、本机操作

2.1.1、整体打包conda

先对conda整体进行打包,因为有可能自己所开发程序下载了大量的依赖包,造成conda目录很大,如果不打包进行迁移的话,细小文件太多,进行下载时特别容易造成IO上涨。

[root@milvus bert_env]# tar -zcf anaconda3.tar.gz anaconda3

2.1.2、只打包虚拟环境

[root@milvus bert_env]# conda pack -n iwen_bert -o iwen_bert.tar.gz

Collecting packages...

Packing environment at '/app/bert_env/anaconda3/envs/iwen_bert' to 'conda.tar.gz'

[###################                     ] | 49% Completed |  5min 20.3s

等待打包完成即可。

iwen_bert代表自己的所要迁移的虚拟环境,可以根据自己的实际环境进行选择。

iwen_bert.tar.gz代表打包的名称,可任意命名。

2.2、新主机操作

把自己本地主机打包好的cond环境下载到新主机指定的目录下,解压配置即可。此处分为整体迁移和部分迁移(只迁移虚拟环境)

2.2.1、整体迁移

[root@bert iwen_bert]# tar -xf anaconda3.tar.gz

2.2.2.1、配置环境变量

[root@bert iwen_bert]# vi /etc/profile.d/conda.sh

CONDA_HOME=/app/conda/anaconda3

PATH=$PATH:$CONDA_HOME/bin:$CONDA_HOME/sbin

export PATH CONDA_HOME

[root@bert iwen_bert]# source /etc/profile.d/conda.sh

2.2.2.2、激活环境

[root@bert iwen_bert]# source activate

此时报出类似以下的错误信息:

/app/bert_env/anaconda3/bin/python: 坏的解释器: 没有那个文件或目录

这是因为本机所安装的anaconda3的环境与新主机的目录配置不一致造成的,此时需要更改新主机anaconda3中bin目录可执行文件(非二进制)中所引用的目录,如:需要把bert_env改成conda,按照自己主机的目录的实际情况进行更改。

注:我这里新主机的目录是:/app/conda/anaconda3,本地主机的目录是:/app/bert_env/anaconda3。

因bin目录的可执行文件太多,一个一个更改的话,太耗费时间,自己整理了一个小脚本进行了更改,执行脚本内容之前,需要提前把所要更改的可执行文件进行整理,并保存到一个文件中,如下:

[root@Bert bin]# grep bert_env *|grep bert_env|grep -v "KaleidoApp" >/tmp/1.txt

bert_env代表我要替换的目录结构。

再把重复的文件名进行过滤,如下:

[root@Bert bin]# cat /tmp/1.txt|awk -F":" '{print $1}'|sort|uniq >/tmp/2.txt

[root@Bert bin]# cat t.sh

#!/bin/bash

#

cat /tmp/2.txt|while read line

do

  sed -i "s/bert_env/conda/g" ./$line

done

注:要把这个脚本放在同bin目录同级的目录下执行。

改完之后,进行环境激活测试,如下:

[root@Bert bin]# conda env list

# conda environments:

#

base                     /app/conda/anaconda3

iwen_bert                /app/conda/anaconda3/envs/iwen_bert

[root@Bert bin]# source activate

(base) [root@Bert bin]# conda activate iwen_bert

(iwen_bert) [root@Bert bin]#

可以正常使激活和进入虚拟环境。

注:如果是进入的虚拟环境,有可能也会报出同上的问题,可以按照同上步骤进行操作即可。

2.2.2、部分迁移(只迁移虚拟环境)

部分迁移的前提是,需要在新主机上提前安装好anaconda3的环境,然后再把2.1.2小节打包的虚拟环境下载到新主机的envs目录下。

[root@Bert anaconda3]# cd envs

[root@Bert anaconda3]# tar -xf iwen_bert.tar.gz

[root@Bert sbin]# conda env list

# conda environments:

#

base                     /app/conda/anaconda3

iwen_bert                /app/conda/anaconda3/envs/iwen_bert

[root@Bert bin]# source activate

(base) [root@Bert bin]# conda activate iwen_bert

(iwen_bert) [root@Bert bin]#

可以正常使激活和进入虚拟环境。

三、注

在进行conda环境从开发主机向生产环境或内网环境迁移的过程中,为了避免因目录结构不一致导致的迁移后无法正确激活和使用虚拟环境的问题,提出以下建议:

在搭建和开发阶段,务必对本地主机上的conda环境采取标准化的目录组织策略,并确保目标主机的目录结构严格遵循这一标准。具体而言,在创建和配置conda虚拟环境时,应预先设定一套可移植的目录路径方案,使得新主机上的相应路径与原主机保持一致。这样一来,迁移后的虚拟环境便能在新的环境中顺利激活和加载,从而保障开发成果在不同环境下的无缝切换。

以上是自己总结的解决方法,若有不足之处,还请大家补充指正,共同探讨和完善conda环境迁移的最佳实践。

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值