在实际工作中,我们常常会遇到这样的场景:有一台可以联网的Ubuntu服务器(A),以及一台无法联网的Ubuntu服务器(B),而我们需要在A上将Conda环境打包,然后迁移到B上运行代码。本文将详细为你介绍如何完成这一过程,确保你能够顺利地在离线服务器上运行你的代码。
一、环境准备
(一)A(联网服务器):步骤1~4
(二)B(离线服务器):步骤5~8
二、A服务器(联网)操作步骤
(一)步骤1:确认Conda和虚拟环境
在开始之前,我们需要先确认Conda是否已经安装,以及查看已有的虚拟环境。然后,激活你想要迁移的环境。具体操作如下:
conda --version # 确认Conda安装
conda env list # 查看已有环境
conda activate py310 # 激活你要迁移的环境
(二)步骤2:安装conda-pack
为了能够将Conda环境打包,我们需要安装conda-pack
。执行以下命令进行安装:
conda install -c conda-forge conda-pack
(三)步骤3:打包虚拟环境
接下来,我们将虚拟环境进行打包。这会生成一个压缩文件,里面包含了整个环境的复制,包括Python和所有依赖库。操作如下:
conda activate py310
conda-pack -n py310 -o py310_env.tar.gz
(四)步骤4:打包你的代码和压缩包
将打包好的环境压缩包和你的项目代码一起打包,然后通过scp、U盘、移动硬盘等方式将它们复制到B服务器。具体操作如下:
mkdir offline_env_transfer
cp py310_env.tar.gz offline_env_transfer/
cp -r your_project_code/ offline_env_transfer/
三、B服务器(离线)操作步骤
(一)步骤5:安装Miniconda(无需联网)
在联网服务器上下载Miniconda的.sh安装包。根据你的服务器架构选择合适的版本,可以从Index of /miniconda下载。例如,对于64位Linux系统,下载链接如下:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
然后将该安装包复制到B服务器,并执行以下命令进行安装:
bash Miniconda3-latest-Linux-x86_64.sh
安装路径建议选择/opt/miniconda3
或$HOME/miniconda3
,并记下你安装的路径,后续步骤中会用到。
(二)步骤6:配置Conda环境变量(第一次使用)
为了能够正常使用Conda,我们需要配置环境变量。编辑.bashrc
文件,添加Conda初始化路径。假设你安装在/opt/miniconda3
,则添加以下内容:
export PATH="/opt/miniconda3/bin:$PATH"
eval "$(/opt/miniconda3/bin/conda shell.bash hook)"
保存后,执行以下命令使配置生效:
source ~/.bashrc
最后,通过以下命令验证Conda是否安装成功:
conda --version
(三)步骤7:解压迁移包并使用虚拟环境
将迁移包解压到指定目录,并修复环境路径。具体操作如下:
mkdir -p ~/envs/py310
tar -xzf py310_env.tar.gz -C ~/envs/py310
cd ~/envs/py310
./bin/conda-unpack
conda-unpack
会自动替换旧路径,修复shebang和缓存,从而确保虚拟环境能够在离线服务器上正常运行。
(四)步骤8:运行代码
激活虚拟环境,并运行你的代码。具体操作如下:
conda activate py310
cd your_project_code
python your_script.py
四、补充:如何查看Conda环境路径
如果你不确定Conda环境存放位置(envs目录),可以在任意一台服务器运行以下命令查看:
conda info --envs
输出结果类似于:
# conda environments:
#
base * /opt/miniconda3
py310 /opt/miniconda3/envs/py310
从这里你可以看到py310
的真实物理路径。
五、总结(文件结构)
迁移前文件结构如下:
offline_env_transfer/
├── py310_env.tar.gz
└── your_project_code/
└── your_script.py
迁移后,在离线机器上:
-
解压到:
~/envs/py310
-
项目放在任意路径
-
使用
conda activate ~/envs/py310
来激活
通过以上步骤,你就可以轻松地将Conda环境从联网的Ubuntu服务器迁移到离线的Ubuntu服务器,并在离线服务器上顺利运行你的代码。希望这篇文章能够对你有所帮助,让你在实际工作中更加高效地完成任务。