Docker,anaconda环境的部署与迁移

功能上线将提上日程,但是如何将我windows环境下的程序放到linux服务器的测试环境跑通呢?这是我这整个清明假期将要解决的一件事,最蠢的办法就是看自己的环境下有哪些依赖,如何到服务器上一个一个下,但是首先这个方法很繁琐,其次也没考虑到后期服务器的拓展【比如说像我现在这个功能依赖的是python3.8,万一之后服务器要上线依赖于python3.11的功能怎么办呢?不可能你上一个功能就换一个新的服务器吧】因此我们必须迁移环境的同时还要在服务器上起到隔离的作用。

在这个大背景之下,anaconda和Docker就是将要考虑的。

  • Docker

Docker环境部署

 Docker入门配套视频及文档

 值得一提的事,其实在跨平台的环境迁移上,直接无脑使用Docker,因为他确实更加便捷和快速。基本上是一劳永逸的做法,但是我后面之所以还介绍了Anaconda的环境迁移就是因为在windows上用docker其实对于我这种不太习惯linux的人来说是很苦恼的,因为要在windows上安装linux内核,开虚拟化等等操作,学习成本对于当前的我来说有点高【主要是docker在公司或者自己的windows电脑上根本启动不了┭┮﹏┭┮】,因此关于docker的讲解我之后在慢慢补充。

#################清明假后一周

今天用anaconda迁移环境迁移了大半天,已经完全放弃了【而且我的重点都不是迁移环境,应该是如何改善这个模型┭┮﹏┭┮】

所以没办法了,只能再尝试docker了,但是这次有点进展了:

  1. 首先解决了windows10企业版更新wsl的问题:解决办法(我的因为终端wsl --update用不了,所以走的手动版,又因为微软商城用不了,所以手动下载Ubuntu 16.04 LTS【wsl与windows进行通信
  2.  其次呢,docker官网又进不去了,我找到了另一个网站:另一个网站(我直接下载的最新版)
  3. 下载好之后,安装因为我之前下过很多次docker但是都没下好,所以有残留的文件,显示存在已有的文件:彻底清除残留文件,并且提一嘴,这个dockerdesktop贼占空间,54g起步因为里面有一个超大的驱动,这就是为什么装了docker的人都在查怎么切换安装路径

最后下载的docker还是有点小问题,无法搜索到image,但是目前的当务之急是打包迁移环境,使用之后再想办法

docker打包anaconda环境

其实操作完之后,发现就是和anaconda下的操作类似,而且在移到docker里又发生了和我到服务器上一样的问题,所以我觉得anaconda应该操作应该没问题,肯定是哪里配错了,等这个环境搭上去了,我就重新把anaconda推倒重新来一次。【我的操作是又到docker里的anaconda里重新配置一次环境再打包】

遇到的问题:

【这里我第一次wsl --shutdown是可以解决的,不知道为什么第二次不行了】

后面找到了解决方法:这里

但是注意在此之前你要确定你的wsl的版本是2,这是我第一次操作的时候设置了一遍默认的,具体咋操作的我不太记得了,你们可以查一下

 ##########最终版

终于在我的不懈努力之下,环境终于部署到测试里了,下面是基于你的docker可以正常使用的情况下,如何迁移环境到linux下:

 linux安装docker

 docker如何迁移环境

 

  • Anaconda

linux上安装anaconda到这里找到linux版本的,.sh文件移动到linux上之后,bash xxx.sh即完成安装

source ~/anaconda3/bin/activate root   #启动anaconda
conda deactivate                       #退出环境

1.离线迁移【注意这个方法只适合同一个操作系统下的迁移】

Anaconda环境迁移

Anconda其实更适用于完全的python环境,也就是说如果你这个项目只是单纯依靠于python没有太多其他依赖的话,anaconda其实是够用的,并且它更容易上手。

首先打包环境:【注意这个操作最好在Anaconda Powershell Prompt下通过管理员身份打开,不然会出现错误!!

conda activate 环境名                         ##激活环境
conda pack -n 环境名 -o 你想要的名字.tar.gz    ##打包环境成压缩包 

如果有报错可以看看:这个博客

得到压缩包之后,我先尝试着在本地新建一个环境使用看看能不能运行,【其实如果只是迁移到本地的话更快的方法是直接复制一遍envs下的你想迁移的环境文件夹,粘贴到本地即可】

【具体先在命令行里敲conda info -e,先找到anaconda的envs路径,把刚刚的压缩包放里面解压即可】

解压之后可以发现多了一个环境【test是刚刚解压出来的】

但是我刚刚尝试了一下,在本地也显示有部分包缺失,我们再尝试一下在线的方式

##############################

anaconda环境迁移部分包无法正确导入

 终于让我在清明假期的最后一天里,把这个离线的问题解决了。虽然是进行了打包,但是仔细对比源环境和迁移后的环境lib/site-packages文件大小完全不同,所以正确的解决办法是完全将源环境的Lib\site-packages文件夹覆盖到迁移环境之下,就可以实现离线的迁移操作了~

2.在线迁移【这个可以用于跨操作系统,但是要删除yml文件的第二个等于号】

通过yaml文件进行迁移

在yaml里指定镜像

yaml文件的细节

但是尽管后面指定了镜像,也还是因为超时报错了,这个时候最简单的方法其实就是把你缺少的对应的whl文件下载下来,放到yaml文件同级的路径下就行了(或者如果这个库不要用,比如说pyqt5我是不需要使用的,完全可以把它从yaml文件中抹去),自己刚刚亲测有效可以迁移环境

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值