Conda环境离线迁移全过程

 更新时间:2025年10月13日 15:19:51   作者:黑白象  
这篇文章主要介绍了Conda环境离线迁移全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1. 背景

笔者所在公司最近要在局域网内部署NLP算法模型,由于需求方对数据安全有严格要求,新服务器所在局域网不能直接访问Internet,因此需要将模型所需的运行环境离线迁移到新服务器中。

2. 方案

2.1 conda-pack

conda-pack是一个命令行工具,用于打包conda环境。

该命令会将坏境中安装的软件包的二进制文件进行打包。

注:本方法不需要下载安装包,因此,conda-pack需要指定平台和操作系统,目标计算机必须于源计算机有相同的平台和操作系统。

2.1.1 打包

  1. condabase环境中安装conda-pack
pip install conda-pack
  1. 打包一个环境
# Pack environment my_env into my_env.tar.gz
conda pack -n my_env

# Pack environment my_env into out_name.tar.gz
conda pack -n my_env -o out_name.tar.gz

# Pack environment located at an explicit path into my_env.tar.gz
conda pack -p /explicit/path/to/my_env

2.1.2 重现

# Unpack environment into directory `my_env`
mkdir -p my_env
tar -xzf my_env.tar.gz -C my_env

# Use Python without activating or fixing the prefixes. Most Python
# libraries will work fine, but things that require prefix cleanups
# will fail.
./my_env/bin/python

# Activate the environment. This adds `my_env/bin` to your path
source my_env/bin/activate

# Run Python from in the environment
(my_env) $ python

# Cleanup prefixes from in the active environment.
# Note that this command can also be run without activating the environment
# as long as some version of Python is already installed on the machine.
(my_env) $ conda-unpack

2.2 pip download

利用pip将服务运行所依赖的包下载到本地,拷贝到目标服务器进行离线安装。

  1. 保存虚拟环境到requirements.txt
pip list --format=freeze > requirements.txt

备注: 此处不使用pip freeze命令是因为pip freeze导出的文件会出现@ file://的问题,导致后续下载依赖包的时候出现问题。

  1. 下载依赖包到指定目录
pip download -r requirements.txt -d "/home/admin/packs" -i https://pypi.tuna.tsinghua.edu.cn/simple
  1. requirements.txt依赖包拷贝到目标服务器
  2. 在目标服务器创建conda虚拟环境
conda create -n my_env python=3.6.5 pip=10.0.1 --offline

备注:

  • --offline:指定离线创建虚拟环境;
  • python=3.6.5 & pip=10.0.1:指定默认的python版本号、并安装pip工具,如果不安装pip,则改虚拟环境使用默认的pip工具,就无法将依赖包安装到新虚拟环境。Anaconda自带的package在anaconda3/pkgs目录下,可自行查看;
  1. 切换到虚拟环境,并安装依赖包
pip install -U --no-index --find-links=./packs -r requirements.txt

备注: 若出现

Cannot uninstall 'xxxx'. It is a distutils installed project and thus we cannot accurately det...

(xxx是某package的名称),使用如下命令进行解决:

 pip install -U --ignore-installed --no-index --find-links=./packs xxx

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 对python中Librosa的mfcc步骤详解

    对python中Librosa的mfcc步骤详解

    今天小编就为大家分享一篇对python中Librosa的mfcc步骤详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python创建关联数组(字典)的方法

    python创建关联数组(字典)的方法

    这篇文章主要介绍了python创建关联数组(字典)的方法,涉及Python操作字典的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • numpy中实现二维数组按照某列、某行排序的方法

    numpy中实现二维数组按照某列、某行排序的方法

    下面小编就为大家分享一篇numpy中实现二维数组按照某列、某行排序的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python用类实现扑克牌发牌的示例代码

    Python用类实现扑克牌发牌的示例代码

    这篇文章主要介绍了Python用类实现扑克牌发牌的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • python3实现弹弹球小游戏

    python3实现弹弹球小游戏

    这篇文章主要介绍了python3实现弹弹球小游戏,图形用户界面tkinter,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Pytorch平均池化nn.AvgPool2d()使用方法实例

    Pytorch平均池化nn.AvgPool2d()使用方法实例

    平均池化层,又叫平均汇聚层,下面这篇文章主要给大家介绍了关于Pytorch平均池化nn.AvgPool2d()使用方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Python常见数据类型转换操作示例

    Python常见数据类型转换操作示例

    这篇文章主要介绍了Python常见数据类型转换操作,结合实例形式分析了Python针对列表、集合、元组、字典等数据类型转换的相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • 解决os.path.isdir() 判断文件夹却返回false的问题

    解决os.path.isdir() 判断文件夹却返回false的问题

    今天小编就为大家分享一篇解决os.path.isdir() 判断文件夹却返回false的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Django中使用Redis配置缓存的方法步骤

    Django中使用Redis配置缓存的方法步骤

    本文主要介绍了Django中使用Redis配置缓存的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • python3操作微信itchat实现发送图片

    python3操作微信itchat实现发送图片

    这篇文章主要为大家详细介绍了python3操作微信itchat实现发送图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02

最新评论