Conda生态介绍
Why Conda
What Conda
How to use
How to build
Future
Why Conda?
[图片上传失败...(image-c86151-1521694167709)]
image
痛点
- 测试环境中往往需要多环境版本交差测试
- 安装包过程中往往需要很多C库依赖(可能和系统冲突)
- 不同业务方有不同的需求,没有统一的部署规范和标准
- PE的时间很宝贵
conda的优势
- 环境管理/隔离(pyenv)
- 版本管理(pyenv)
- 包管理工具(yum,apt,pip....)
- 多软件管理(python,R,Scala,Java,c/c++)
What Conda?
三个名词:
- Conda:
一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。(它为Python, R, Scala, Java, Javascript, C/ C++以及其他应用程序堆栈提供包管理.
) - Anaconda
Anaconda
是一个 Python 发行版,主要用于科学计算和信号处理等领域,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析等Python 包。 - Miniconda
Miniconda
是一个小的“引导”版本,只包括conda,Python和它们所依赖的包。可以使用“conda install”命令从Continuum存储库中单独安装超过720个科学软件包及其依赖项。
总结:
Conda是一个可以为科学计算环境提供统一构建、发布、管理的系统.
How to use
- 安装conda基础环境(anaconda/miniconda)
- 配置conda本地环境
- 执行conda相关操作(search/install/remove)
安装conda基础环境:
# 下载并安装miniconda
$ wget https://mirror.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.3.11-Linux-x86_64.sh
# 使用miniconda初始化conda环境,会安装一个默认的python版本
$ bash Miniconda3-4.3.11-Linux-x86_64.sh -b -p /export/biaoge/conda-test/python2.7
# 安装完成之后会在/export/biaoge/conda-test/python2.7目录下生成整个conda的相关目录结构,包括可执行文件、动态链接库等.
配置conda本地环境:
# 为了方便环境隔离,用户可以将conda的中的bin和lib目录追加到当前环境的PATH,和LD_LIBRARY_PATH环境
$ cd /export/biaoge/conda-test/python2.7
$ export PATH=$(pwd)/bin:$PATH
$ export LD_LIBRARY_PATH=$(pwd)/lib:$LD_LIBRARY_PATH
# 测试使用(miniconda3.4.3中包含的默认python版本)
$ python --version
Python 3.6.0 :: Continuum Analytics, Inc
配置conda本地环境:
# 查看默认的repos
$ conda config --show
.....
default_channels:
- https://repo.continuum.io/pkgs/free
- https://repo.continuum.io/pkgs/r
- https://repo.continuum.io/pkgs/pro
.....
# 设置国内或本地私有源
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
执行conda基本操作:
# 切换到python2.7并测试numpy模块
$ conda install python=2.7 -y
$ conda install numpy -y
$ python --version
Python 2.7.14 :: Anaconda, Inc.
$ python -c "import numpy as np;print(np.__version__)"
1.14.2
# 查找numpy相关的包
$ conda search numpy
# 卸载conda包
$ conda remove numpy
How to build
- 准备conda build环境
- 确认目标包/模块在源码中的依赖项
- 创建conda包的元文件
- 构建conda包
准备conda build环境:
注意:
conda build环境默认包含在anaconda
中,如果使用miniconda
安装需要使用conda install conda-build -y
进行环境构建。
# 安装conda基础环境
$ conda install conda-build -y
确认目标包/模块的依赖项:
以confluent-kafka为例:
# Requires Distributions:
- Python >= 2.7 or Python 3.x
- librdkafka >= 0.9.5 (latest release is embedded in wheels)
创建conda包的元文件:
$ mkdir confluent-kafka
$ touch confluent-kafka/build.sh
$ vim confluent-kafka/meta.yaml
{% set version="0.11.0" %}
package:
name: confluent-kafka
version: {{ version }}
source:
git_url: https://github.com/confluentinc/confluent-kafka-python.git
git_tag: v0.11.0
build:
number: 0
script: python setup.py install
requirements:
build:
- python
- librdkafka
run:
- python
- librdkafka
构建conda包:
注意:conda build过程中需要检测项目目录下的meta.yaml文件,如果在meta.yaml文件中的build区域找中无script,则需要检测build.sh脚本中的构建参数
# 测试构建(构建成功后有包的地址)
$ cd confluent-kafka && conda build .
# 构建成功后可以在本地测试使用
$ conda install --use-local confluent-kafka -y
$ python -c "import confluent_kafka"
# 本地测试通过后可上传到anaconda 私有仓库,也可同步到企业内部私有conda源,以供更多人使用
注意:细心的同学可以看到在依赖选项中有librdkafka包,需要使用同种方式优先构建。
Future
- 推广conda在科学计算领域的使用(用户:运维、开发、测试、算法工程师)
- 提炼并抽象科学计算领域的环境需求,丰富金融内部conda私有源
- 结合现有系统+流程推动conda环境部署行为前置(谁用谁安装)
- conda持续化构建和测试平台(自动构建+环境预测试)
- conda+docker(解决异构和移植的问题)的融合
网友评论