更 Pythonic: 从 Conda 开始

·492 字·3 分钟
conda
n3xtchen
作者
n3xtchen
Sharing Funny Tech With You

先忽悠上贼船 #

Conda 是一个开源包管理系统和环境管理系统,有如下当家特点:

  • 多 Python 版本 的虚拟环境管理:virtualenvPython 下一个包,它只能创建所在的 Python 版本的环境,看看 Conda

    conda create --name mypy python=”随心所欲的指定版本,不用管 conda 的 python 版本“
    
  • 不仅仅管理 Python 的工具包,它也能安装非 Python 的包。安装 numpy,需要先装相关的 C 库?不存在,只有 pip 才需要,Conda 只要一条命令:

    conda install -c anaconda numpy
    

不说其他特性,足以秒杀 pipvirtualenv/virtualenv-wrapper (不用担心,上述的命令,将会在后面详细讲解)。

想要更 Pythonic 吗?跟我来

我的环境: #

  • Ubuntu 18.04.2 LTS

是不很任性,没有任何前置要求。

1. 下载和安装 Anaconda #

打开 Anaconda 官网,如下图:

选择你操作系统对应的安装包和 Python 版本:

  • 系统选择是 Linux:我的作业系统,你们选择你们使用的系统,此教程,在 macOs 测试过(如果 Windows 的用户安装遇到问题,请在评论区告知,不甚感激)
  • 选择 Python 3.7 version: 因为 Python 2 很快就要停止维护了,2020 年 Python 2 就要停止维护,不想到时痛苦,赶紧拥抱 Python 3 吧!不是我危言耸听,
ichexw@N3xt-Studio:~ $ wget https://repo.anaconda.com/archive/Anaconda3-2018.12-Linux-x86_64.sh
ichexw@N3xt-Studio:~ $ sh ./Anaconda3-2018.12-Linux-x86_64.sh
ichexw@N3xt-Studio:~ $ ls ~/
anaconda3

根据他的提示完成安装,默认情况会安装用户根目录下,并在 ~/.bashrc 尾部看到:

# added by Anaconda3 2018.12 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/root/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/root/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/root/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base
    else
        \export PATH="/root/anaconda3/bin:$PATH"
    fi
fi

它会让 Conda 命令在你的命令行下可用。

接下来,我们要开始了。。。

2. 更新到最新版本 #

ichexw@N3xt-Studio:~ $ conda update -n base -c defaults conda

3. 环境管理 #

如果,你使用过 virtualenv,这个就不会陌生。实际上,Conda 集成了 virtualenv/virtualenv-wrapper 的功能,你不需要另外安装。

3.1. 查看环境: #

ichexw@N3xt-Studio:~ $ conda env list
# conda environments:
#
base                  *  /root/anaconda3
ichexw@N3xt-Studio:~ $ python --version
Python 3.7.1

这些都是自带的。

3.2. 创建环境 #

接着,我们创建一个名为 mypy 的环境,指定 Python 版本是 3.7(不用管是3.7.x,conda会为我们自动寻找3.7.x中的最新版本)

ichexw@N3xt-Studio:~ $ conda create --name mypy python=3.7
Solving environment: done
## Package Plan ##

  environment location: /root/anaconda3/envs/mypy

  added / updated specs:
    - python=3.7
    
The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    pip-19.0.1                 |           py37_0         1.8 MB
    ca-certificates-2019.1.23  |                0         126 KB
    setuptools-40.7.3          |           py37_0         610 KB
    python-3.7.2               |       h0371630_0        36.4 MB
    libedit-3.1.20181209       |       hc058e9b_0         188 KB
    ------------------------------------------------------------
                                           Total:        39.1 MB
...此处省略无数行
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate mypy
#
# To deactivate an active environment, use
#
#     $ conda deactivate

再次查看下,创建已有的环境

(mypy) ichexw@N3xt-Studio:~ $ conda env list
# conda environments:
#
base                 *   /root/anaconda3
mypy                    /root/anaconda3/envs/mypy

看到 mypy,说明我们创建成功了

激活创建好的环境:

(mypy) ichexw@N3xt-Studio:~ $ conda activate mypy

3.3. 安装 Python 包 #

(mypy) ichexw@N3xt-Studio:~ $ conda install -c anaconda flask -n mypy

命令解释:

  • -c: 代表安装的源,这里我们使用 anacoda 提供的 flask
  • -n: 这个可以省略,默认把包安装到当前激活的环境中,我们也可以指定特定的环境

pip 差不多。

3.4. 拷贝环境 #

(mypy) ichexw@N3xt-Studio:~ $ conda create -n mypy-backup --clone mypy

3.4. 导出环境 #

熟悉 pip 的用户应该很熟悉下面的操作:

pip freeze > requirements.txt # 依赖备份
pip install -r requirements.txt # 从备份安装

看看 conda 中怎么做!

(mypy) ichexw@N3xt-Studio:~ $ conda env export > environment.yml

environment.yml 内容如下:

name: mypy    # 环境名称
channels:     # 依赖的源
  - anaconda
  - defaults
dependencies: # 依赖
  - ca-certificates=2019.1.23=0
  - certifi=2018.11.29=py37_0
  - click=7.0=py37_0
  - flask=1.0.2=py37_1
  - itsdangerous=1.1.0=py37_0
  - jinja2=2.10=py37_0
  - markupsafe=1.1.0=py37h7b6447c_0
  - openssl=1.1.1=h7b6447c_0
  - werkzeug=0.14.1=py37_0
  - libedit=3.1.20181209=hc058e9b_0
  - libffi=3.2.1=hd88cf55_4
  - libgcc-ng=8.2.0=hdf63c60_1
  - libstdcxx-ng=8.2.0=hdf63c60_1
  - ncurses=6.1=he6710b0_1
  - pip=19.0.1=py37_0
  - python=3.7.2=h0371630_0
  - readline=7.0=h7b6447c_5
  - setuptools=40.7.3=py37_0
  - sqlite=3.26.0=h7b6447c_0
  - tk=8.6.8=hbc83047_0
  - wheel=0.32.3=py37_0
  - xz=5.2.4=h14c3975_4
  - zlib=1.2.11=h7b6447c_3
prefix: /root/anaconda3/envs/mypy #  还原的位置

根据自己需求修改 environment.yml

3.5. 根据 environment.yml 创建环境 #

ichexw@N3xt-Studio:~ $ conda env create -f environment.yml

3.6. 删除一个已有的环境 #

ichexw@N3xt-Studio:~ $ conda remove --name mypy --all

It’s Over! 很容易上手吧!