更 Pythonic: 从 Conda 开始
·492 字·3 分钟
conda
先忽悠上贼船 #
Conda 是一个开源包管理系统和环境管理系统,有如下当家特点:
多 Python 版本 的虚拟环境管理:virtualenv 是 Python 下一个包,它只能创建所在的 Python 版本的环境,看看 Conda:
conda create --name mypy python=”随心所欲的指定版本,不用管 conda 的 python 版本“
不仅仅管理 Python 的工具包,它也能安装非 Python 的包。安装 numpy,需要先装相关的 C 库?不存在,只有 pip 才需要,Conda 只要一条命令:
conda install -c anaconda numpy
不说其他特性,足以秒杀 pip,virtualenv/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! 很容易上手吧!