前不久,突然想把 conda 拿起来玩玩,准备当作 Python Version Manager 来用。不过 Mini Conda 的安装似乎和几年前我实验时有一些比较大的区别了。
首先依据 conda 的官方文档 Installing on Windows 和 Conda init 可知,Conda 为了避免对已有的环境造成影响,从而使得侵入性最小,一是不再推荐将 conda 添加到系统 PATH 中(All User 安装时自动禁用此选项),二是如果要在默认 shell 中可访问 conda,可以通过 conda init
命令来创建各个 shell 的 profile hook 来达到在命令行使用的目的。而关于如何不自动激活 base 环境的方法可参见此链接。
阅读文档之后,我的第一感受是:“可以啊 Conda,为了侵入性最小考虑挺多啊”。然而事与愿违,我在我的某台开发机上遇到了类似于conda activate 激活虚拟环境失败原因的问题。简而言之就是,Conda Hook 注入之后,实则接管了 shell 的所有 prompt 进行处理,但它并没有考虑 Powerline 等特殊字体之类的各种情况。我不禁为之一震,宣称侵入性最小,实则侵入性十足啊。突然又想起来当年的记一次使用 pandas 处理 Excel 数据的感悟。笑,还是老老实实用官方单版本 Python 吧。
P.S. 能别混用 pip 和 conda 就别混用这俩,否则你的 lib 环境将极难移植。