博主在进行实验过程中由于需要频繁更换服务器,而每次更换服务器后便少不了进行环境配置,尽管有requirement.txt的帮助,配置环境时也是需要费一番功夫。因此想到conda的环境导出与导入功能。
具体过程如下:
# -n 后面的参数是服务器A要克隆的环境名称,> 后跟着我们要保存的路径文件名称
conda env export -n yolos > /data/yolos.yaml
如下:
ubuntu@VM-0-17-ubuntu:/$ conda env export -n yolos > /data/yolos.yaml
当然我么也可以先切换到我们想要导出的conda环境中再进行导出。
ubuntu@VM-0-17-ubuntu:/$ source activate yolos
(yolos) ubuntu@VM-0-17-ubuntu:/$ conda env export >/data/dino.yaml
导出的文件如下:
name: yolos
channels:- defaults
dependencies:- _libgcc_mutex=0.1=main- _openmp_mutex=5.1=1_gnu- blas=1.0=mkl- ca-certificates=2023.01.10=h06a4308_0- certifi=2022.12.7=py37h06a4308_0- cudatoolkit=10.1.243=h6bb024c_0- freetype=2.12.1=h4a9f257_0- giflib=5.2.1=h5eee18b_3- intel-openmp=2021.4.0=h06a4308_3561- jpeg=9e=h7f8727e_0- lcms2=2.12=h3be6417_0- ld_impl_linux-64=2.38=h1181459_1- lerc=3.0=h295c915_0- libdeflate=1.17=h5eee18b_0- libffi=3.4.2=h6a678d5_6- libgcc-ng=11.2.0=h1234567_1- libgomp=11.2.0=h1234567_1- libpng=1.6.37=hbc83047_0- libstdcxx-ng=11.2.0=h1234567_1- libtiff=4.5.0=h6a678d5_2- libwebp=1.2.4=h11a3e52_1- libwebp-base=1.2.4=h5eee18b_1- lz4-c=1.9.4=h6a678d5_0- mkl=2021.4.0=h06a4308_640- mkl-service=2.4.0=py37h7f8727e_0- mkl_fft=1.3.1=py37hd3c417c_0- mkl_random=1.2.2=py37h51133e4_0- ncurses=6.4=h6a678d5_0- ninja=1.10.2=h06a4308_5- ninja-base=1.10.2=hd09550d_5- numpy-base=1.21.5=py37ha15fc14_3- openssl=1.1.1t=h7f8727e_0- pip=22.3.1=py37h06a4308_0- python=3.7.16=h7a1cb2a_0- readline=8.2=h5eee18b_0- setuptools=65.6.3=py37h06a4308_0- six=1.16.0=pyhd3eb1b0_1- sqlite=3.40.1=h5082296_0- tk=8.6.12=h1ccaba5_0- wheel=0.38.4=py37h06a4308_0- xz=5.2.10=h5eee18b_1- zlib=1.2.13=h5eee18b_0- zstd=1.5.2=ha4553b6_0- pip:- addict==2.4.0- charset-normalizer==3.1.0- cloudpickle==2.2.1- coloredlogs==15.0.1- cycler==0.11.0- cython==0.29.33- filelock==3.9.0- flatbuffers==23.3.3- fonttools==4.38.0- huggingface-hub==0.13.2- humanfriendly==10.0- idna==3.4- importlib-metadata==6.0.0- kiwisolver==1.4.4- matplotlib==3.5.3- mpmath==1.2.1- multiscaledeformableattention==1.0- numpy==1.21.6- nvidia-cublas-cu11==11.10.3.66- nvidia-cuda-nvrtc-cu11==11.7.99- nvidia-cuda-runtime-cu11==11.7.99- nvidia-cudnn-cu11==8.5.0.96- onnx==1.13.1- onnxruntime==1.14.1- opencv-python==4.7.0.72- packaging==23.0- pandas==1.3.5- pillow==9.4.0- protobuf==3.20.3- pycocotools==2.0.6- pyparsing==3.0.9- python-dateutil==2.8.2- pytz==2022.7.1- pyyaml==6.0- requests==2.28.2- scipy==1.7.3- seaborn==0.12.2- submitit==1.4.5- sympy==1.10.1- termcolor==2.2.0- timm==0.6.12- torch==1.13.1- torchvision==0.14.1- tqdm==4.65.0- typing-extensions==4.5.0- urllib3==1.26.14- yapf==0.32.0- zipp==3.15.0
prefix: /home/ubuntu/.conda/envs/yolos
随后我么只需要将该文件上传到另一个服务器上后执行导入环境命令即可。
先前博主互传两文件是都需要先从一个服务器上下载到本地,随后再上传到另一个服务器上,那么可不可以直接两个服务器之间互传呢?肯定是可以的。
两个服务器间互传文件首先可以使用wget命令:如下
循环往复一直报如下错误:百度了下也没有找到解决方法。
ubuntu@VM-0-5-ubuntu:~/data$ wget ftp://42.194.134.136:22//data/yolos.yaml
--2023-03-18 10:38:40-- ftp://42.194.134.136:22//data/yolos.yaml=> ‘yolos.yaml’
Connecting to 42.194.134.136:22... connected.
Error in server response. Closing.
Retrying.
wget命令失败
将目标服务器文件下载到本服务器。
rsync ubuntu@42.194.134.136:/data/yolos.yaml /home/ubuntu/data/
OK成功,需要注意的是需要输入目标服务器的密码
将本服务器文件上传到目标服务器
rsync /data/yolos.tyaml ubuntu@192.168.0.10:/home/ubuntu/data
文件上传成功后我们便可导入conda环境了。
conda env create -f data/yolos.yaml
需要给.conda文件写入权限:
sudo chmod a+w .conda
再次执行:报错了,这个是由于该环境中需要配置CUDA算子导致的。
看来对于这个conda环境没有什么捷径可走,但对一些不需要配置CUDA算子的cuda环境,如另一个yolov7的cuda环境,就可以正常运行。
但该方法如果使用默认的下载源的话所需时间可能较长。
下一篇:安卓中json数据的读取