python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Conda环境离线迁移

Conda环境离线迁移全过程

作者:黑白象

这篇文章主要介绍了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

备注:

  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

总结

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

您可能感兴趣的文章:
阅读全文