最近需要在离线的服务器上做些时间序列数据的分析,需要用到的一些诸如darts、sktime、scikit-learn库在Anaconda中是没有安装的,由于离线服务器无法联网、单独下载安装包的话有很多依赖难以处理,所以想到了将Anaconda的虚拟环境进行迁移。搜索了网上一些教程,发现没有完整的详细过程,中间遇到了一些坑,记录一下备查。
1.从联网计算机中导出已经安装完成的虚拟环境
1.1.在联网计算机中克隆虚拟环境
我直接使用默认的base环境,所以将所有的包安装完成后,直接克隆base环境,因为默认的base环境是无法导出的。打开AnacondaPrompt,执行克隆命令,注意win10系统有时需要以管理员身份运行获得权限,命令如下:
#命令格式:condacreate-n新环境的名称--clone老环境名称
#对于我而言实际执行的命令:condacreate-n2023--clonebase
这样的话就完成了base环境的克隆,新的环境名称为2023,用于base中安装的一切包。可以在命令行中查看联网机目前的环境,具体命令是:
condainfo--envs
1.2.安装虚拟环境打包工具并导出克隆好的环境
conda-pack是打包工具
condainstall-cconda-forgeconda-pack
具体的打包命令如下:
condapack-n2023-o2023.tar.gz
默认打包在C盘:/用户/用户名的文件夹中
2.离线服务器中的操作
2.1.安装同版本的Anaconda。
以免出现未知错误。
2.2.拷贝解压打包环境
将打包好的虚拟环境压缩包放到离线服务器同版本Anaconda路径下的envs文件夹内,解压。
2.3.设置默认激活的环境为解压后的新环境
解压前如果有打开Anaconda需要关闭重启后再操作该步骤,打开AnacondaNavigator,点击左上角首选项,将默认打开的环境设置为新解压的虚拟环境,在本例中即为2023.
2.4.为jupyter注入ipython
如果是习惯使用jupyter的话会发现,即使默认设置了新环境,打开jupyter新建ipynb文件会发现报错,找不到ipython内核。
这个主要是虽然迁移了包组,但离线服务器Anaconda的ipython没有链接到新迁移过来的环境中,但我实际操作发现如果修改配置文件直接将离线服务器的python.exe链接了到jupyter,新迁移环境的包组是无法使用的,因为jupyter打开的python内核属于离线机器的base环境。所以需要两步走。
2.4.1.先修改配置文件
打开AnacondaPrompt命令行,可以看下左边提示的是否为base环境,如果是,执行以下命令查看python.exe的位置。
jupyterkernelspeclist
该命令可以看到离线服务器python.exe的的具体路径,复制保存。
在离线服务器解压位置往下寻找以下路径……2023sharejupyterkernelspython3,找到kernel.json文件打开编辑。将该文件中的python.exe的路径参数修改为刚才复制到的路径。
2.4.2.为jupyter注入ipython
打开AnacondaPrompt命令行,先使用命令激活2023环境。
condaactivate2023
python-mipykernelinstall--user--name2023--display-name“python2023”
执行结束之后重启jupyter就会发现有名为python2023的新kernel选项了,这个kernel是链接到2023新环境了,可以导入迁移的包。
到此整个迁移就算完成了。
2.5.修改jupyterlab的默认工作目录
2.5.1.生成配置文件
执行命令后在C:Users.jupyter目录下生成jupyter_lab_config.py文件。
jupyterlab--generate-config
2.5.2.修改配置文件中默认工作目录路径
打开jupyter_lab_config.py文件找到c.ServerApp.root_dir字段,先去掉注释,然后修改为代码所在的目录,注意Windows中文件路径的转义。
备注:后续我可能还得探索下新加入个别包组的话要如何迁移,每次迁移整个包好像挺费时间的,遇到了再补充。
上一条:为 AI 重新定义数据库:MongoDB 为何收购 Voyage AI
下一条:2025年Anaconda最新镜像源配置