Skip to content

Conda

conda-cheatsheet

正式认识conda

参考https://conda.io/docs/user-guide/getting-started.html

conda 在window下设置

win10下已经装了anaconda,spyder(2.7),现想再装上python3,于是利用conda创建一个python3的环境bunny

conda create --name bunny python=3

切换到bunny环境

activate bunny

参考spyder3 doc

pip install spyder3

为 py3 安装 spyder

  1. 先建一个conda环境bunny,安装python3.4,因为要支持pyside,而经试验3.5+不支持。
  2. 安装cmake
  3. pyside出现keyerrror

转向py3.6 不装pyside,而装pyqt5

pip install pyqt5

最终在新建的另一个 conda 环境 snakes 中装好了 Python3.6 及 spyder3,通过下面命令运行就 OK 了。

source activate snakes
spyder3 &

disable default base

conda config --set auto_activate_base false

refer to How do I prevent Conda from activating the base environment by default?

actually, this is equivalent to add a line in ~/.condarc

auto_activate_base: false

conda package 的版本号不匹配

在用 anaconda3 新建 py37 环境后,安装 spyder,但是运行时弹出

而用 conda list | grep qtconsole 检查发现

qtconsole                 4.6.0                      py_0

隐隐约约感觉是装了多个版本,想卸载掉错误的版本,但都没找到 qtconsole 怎么查看版本号。然后 Google 发现另外一个类似的问题,

Getting wrong version of packages using Conda

于是我也去检查了 ipython 的版本,发现

$ ipython --version
7.7.0

$ conda list | grep ipython
ipython                   7.10.2           py37h39e3cac_0

同样存在版本号不一致的问题。

所以按照评论的建议,用

pip uninstall ipython

首先解决了 ipython 的版本号不一致的问题。

受此启发,用

pip uninstall qtconsole

解决了 qtconsole 的问题。

conda 指定 env 路径

如果直接在创建时通过 -p 指定路径

conda create -p ... python=x.x

注意如果指定路径,则不需要 --name, 因为默认会将路径最后的文件名看成是 env 的 name。

则 activate 的时候需要加上整个路径。

在创建之前可以先在 .condarc 中的 env_dirs 项下添加指定的路径。

为了让新环境直接装到该指定的路径下,将该路径放在最前面。换句话说,conda create 默认是在第一个路径下创建环境。

conda 迁移环境

官方文档介绍了四种环境迁移的方式,

  • clone
  • Spec List
  • Environment.yml
  • Conda Pack

其中第四种似乎更符合需求,因为第二三种需要重新下载 package,而第一种不太能直接(额外指定参数或许可以)支持多个 envs folder 间的切换,但是第四种本质上就是打包解压,所以何不如直接 mv 移动呢,毕竟我是在同一台电脑上操作,试了一下,果然成功了。

$ conda env list
# conda environments:
#
base                  *  /home/weiya/anaconda3
py27                     /home/weiya/anaconda3/envs/py27
py35                     /media/weiya/PSSD/Programs/anaconda3/envs/py35

$ mv anaconda3/envs/py27/ /media/weiya/PSSD/Programs/anaconda3/envs/
$ conda env list
# conda environments:
#
base                  *  /home/weiya/anaconda3
py27                     /media/weiya/PSSD/Programs/anaconda3/envs/py27
py35                     /media/weiya/PSSD/Programs/anaconda3/envs/py35

但是发现了个小问题,pip用不了,比如

$ pip install pymdown-extensions
bash: /media/weiya/PSSD/Programs/anaconda3/envs/py36/bin/pip: /home/weiya/anaconda3/envs/py36/bin/python: bad interpreter: No such file or directory

其还是想调用原先路径下的 python,然后重新装一下 conda install pip 就好了。

conda clean

笔记本硬盘余量告急,然后发现 anaconda 文件夹下竟然有 15GB,所以想有没有什么方法清理一下,果然有 conda clean 这句命令,

Remove unused packages and caches.

但是有点担心其 unused 的定义,是多长时间没有用过吗?比如一个月之类的,如果是这样,意义并不大。后来找到了这个回答

An “unused” package is one that’s not used in any environment.

以及 Conda clean 净化Anaconda

  • 有些包安装之后,从来没有使用过;
  • 一些安装包的tar包也保留在了计算机中;
  • 由于依赖或者环境等原因,某些包的不同版本重复安装。

于是比较放心地运行了 conda clean -a,一下子清理出 8.6G 的空间。