conda

conda是一个包,依赖和环境管理工具,适用于多种语言,如: Python, R, Scala, Java, Javascript, C/ C++, FORTRAN

conda默认随miniconda或anaconda发行,因此要安装conda,只需要安装miniconda或anconda即可。

如果通过anaconda安装, 国内直接从官网下载安装包会比较慢,可以通过清华大学的源下载。

目录结构

安装anacoda后,在用户HOME目录下,会有一个anaconda目录,目录结构如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ tree -L 1 anaconda
anaconda
├── Anaconda-Navigator.app
├── bin
├── conda-meta
├── doc
├── envs # conda管理的环境信息
├── etc
├── include
├── lib
├── libexec
├── mkspecs
├── phrasebooks
├── pkgs # 里面是解压的软件安装包
├── plugins
├── python.app
├── qml
├── resources
├── sbin
├── share
├── ssl
└── translations

20 directories, 0 files

bin, include, lib, share里面是conda默认环境的文件

常用配置

conda默认的配置文件为~/.condarc,通过修改配置文件: 我们可以配置如下内容:

  • conda从哪里获取安装包
  • conda是否使用代理服务器
  • conda从哪里获取环境信息
  • 是否更新bash提示当conda环境激活的时候
  • 等其它配置信息

查看所有配置信息

1
$ conda config --show --json

配置使用清华的源

1
2
3
4
5
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

配置安装软件时不要提示输入yes

1
$ conda config --set always_yes true

更多配置可以参考https://conda.io/docs/user-guide/configuration/index.html

一个conda环境就是一个目录包含所有的安装包和依赖,不同环境之间独立且不相互影响。跟python的虚拟环境virtualenv一样

可以通过执行 anaconda search -t <software>来列出保存目标软件的所有官方镜像

conda 管理

1
2
3
4
5
# 查看当前版本
$ conda --version
conda 4.3.27
# 更新conda
$ conda update conda

conda环境管理

功能 代码
创建环境 conda create -n environment-name
激活环境 conda activate
关闭环境 conda deactivate
删除环境 conda remove -n environment-name –all
打开终端自动进入conda环境 conda config –set auto_activate_base true
关闭打开终端自动进入conda环境 conda config –set auto_activate_base false
复制Conda的虚拟环境的命令 conda create -n conda-env2 –clone conda-env1 (这里conda-env2是新创建的Conda环境,conda-env1是被复制的Conda环境)

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 创建一个名为snowflakes的环境,并安装biopython(默认使用下载anconda时选择的python版本)
$ conda create --name snowflakes biopython

# 激活环境
$ source activate snowflakes

# 退出环境
$ source deactivate

# 创建名为bunnies,使用python 3.5版本的环境,并安装astroid和babel
$ conda create --name bunnies python=3.5 astroid babel

# 查看所有的环境
$ conda info --envs(conda env list)

# 复制snowflakes环境到flowers
conda create --name flowers --clone snowflakes

# 删除环境 -–all如果不加上的话代表删除的是当前环境下的一个包,比如numpy等
$ conda remove --name flowers --all

conda环境离线迁移

【炼丹炉】Conda环境离线迁移

conda-pack是一个命令行工具,用于打包conda环境。该命令会将坏境中安装的软件包的二进制文件进行打包。

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

打包

在conda的base环境中安装conda-pack;

1
pip install conda-pack

打包一个环境

1
2
3
4
5
6
7
8
# 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

重现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 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 download

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

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

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

  1. 下载依赖包到指定目录
1
2
pip download -r requirements.txt -d "/home/admin/packs" -i https://pypi.tuna.tsinghua.edu.cn/simple

  1. 将requirements.txt和依赖包拷贝到目标服务器
1

  1. 在目标服务器创建conda虚拟环境
1
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. 切换到虚拟环境,并安装依赖包
1
2
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的名称),使用如下命令进行解决:

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

conda 导入导出虚拟环境

  1. 激活环境

    conda acitvate environment-name

  2. 导出虚拟环境

    conda env export > environment-name.yaml

  3. 创建环境

    conda env create -n new-environment-name -f environment-name.yaml (根据environment-name.yaml创建名为new-environment-name的虚拟环境)

conda python版本管理

conda把python看作和其他包一样,可以在创建虚拟环境的时候指定

1
2
3
4
5
# 查看可用的python版本
$ conda search --full-name python

# 安装不同版本的python
$ conda create --name snakes python=3

conda packages管理

查看可以通过conda命令安装的包名,可以在网站查看http://docs.continuum.io/anaconda/pkg-docs.html

1
2
3
4
5
6
7
8
# 查看当前环境下的已经安装的包
$ conda list

# 查找包
$ conda search beautifulsoup4

# 安装包到环境bunnies,不加--name时,默认安装到当前环境
$ conda install --name bunnies beautifulsoup4

conda默认从https://repo.continuum.io/pkgs/下载安装包,当无法找到需要的安装包时,可以通过Anaconda.org安装包, 在http://anaconda.org可以搜索可用的包并在包详情页面获取下载命令,如:

1
2
3
4
5
# 安装包bottleneck
$ conda install -c conda-forge bottleneck

# 检查安装结果
$ conda list

使用pip命令安装包,当无法使用conda安装,也无法从Anaconda.org下载到需要的安装包时,可以通过pip命令安装

1
2
3
4
$ pip install see

# 查看包
$ conda list

删除指定环境里的包

1
$ conda remove --name bunnies iopro

anconda3虚拟环境离线迁移到服务器

Reference

准备本地虚拟环境(要迁移的环境)

1
conda pack -n venv_name -o output_name.tar.gz #venv_name 本地虚拟环境的名称 

如果提示No command ‘conda pack’,

则尝试使用

1
conda install -c conda-forge conda-pack

安装完成后重新进行打包。

上传压缩文件

  1. 使用WinSCP进行上传下载文件

  2. 如果开发服务器和生产服务器网络不通,且没有winSCP则:
    拥有SecureCRT则: ALT+P 进入sftp界面
    可以用 lpwd 命令查看当前界面锁定的windows路径
    指定操作的windows中的路径 命令是 lcd 命令,例如:lcd D:\download

    上传命令: put E:\ocr_code\output_name.tar.gz
    下载命令: get output_name.tar.gz

  3. 没直连权限时,只能先上传文件到跳板机,再从跳板机传到生产服务器:

    a、从服务器上下载文件
    scp username@serverIP:/path/filename /var/download/local_dir(本地目录)

    b、上传本地文件到服务器
    scp /path/filename username@serverIP:/path

    C、从服务器下载整个目录
    scp -r username@serverIP:/var/download/remote_dir/(远程目录) /var/download/local_dir(本地目录)

    d、上传目录到服务器
    scp -r local_dir username@serverIP:remote_dir

服务器安装

在服务器上找到服务器上的Anaconda3的环境安装路径:

1
2
3
4
5
6
查看conda环境安装路径命令:                 conda info --env
进入目录: cd Anaconda3/envs/
创建虚拟环境目录: mkdir -p pdocr
将刚才上传的虚拟环境压缩文件解压至目录:

tar -xzvf output_name.tar.gz -C Anaconda3/envs/pdocr

环境应该已迁移安装成功了,

检查是否出现了迁移的虚拟环境:conda info -e

激活虚拟环境: source activate pdocr

检查是否所有的包均成功迁移: conda list