Conda环境离线迁移全过程

Written by

in

文章目录
  • 笔者所在公司最近要在局域网内部署NLP算法模型,由于需求方对数据安全有严格要求,新服务器所在局域网不能直接访问Internet,因此需要将模型所需的运行环境离线迁移到新服务器中。
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: 如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑 详解anaconda离线安装pytorchGPU版 Anaconda 离线安装 python 包的操作方法
  • 目录
    • 1. 背景
    • 2. 方案
      • 2.1 conda-pack
        • 2.1.1 打包
        • 2.1.2 重现
      • 2.2 pip download
      • 总结

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

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

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

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

        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
        

        # 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
        

        利用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
        

        以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

        您可能感兴趣的文章:

        • 如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
        • 详解anaconda离线安装pytorchGPU版
        • Anaconda 离线安装 python 包的操作方法

        站内搜索