【已解决】MacOs升级Catalina后由于shell命令解析器由bash变为zsh导致conda命令不能用问题

原来anaconda是安装在/目录下,系统升级后,不允许了,因此anaconda安装文件被放在“/用户/共享/迁移的项目”文件夹下。这时启动终端进入python,会发现之前用anaconda装的python环境都没了,现有的python是MacOS自带的python2.7。

1、首先摁command+shift+. 显示隐藏文件。

2、将anaconda3的安装文件夹拷贝到/Users/你的用户/ 下。

3、将anaconda3的bin目录放进PATH中

首先查看PATH

echo $PATH

发现PATH中没有当前anaconda的路径,只有原先的路径:

/anaconda3/bin:/anaconda3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

添加新路径,如果还用bash,就在~/.bash_profile中修改,如果改用zsh,就在:~/.zshrc中修改。终端偏好设置里可以自己选。

sudo vim ~/.zshrc (~/.bash_profile同理)
或者在/Users/你的用户下找到隐藏文件.zshrc(~/.bash_profile同理)

加入环境变量

export PATH="/Users/你的用户/anaconda3/bin:$PATH"

从新打开终端
此时再运行python时,不再是系统自带的python2.7,而是anaconda中的python版本。
但是此时conda 仍然不能运行。报错如下:

zsh: /Users/用户名/anaconda3/bin/conda: bad interpreter: /anaconda3/bin/python: no such file or directory

还需要更改conda文件

4、更改conda文件

在/Users/你的用户/anaconda3/bin文件夹下,找到conda,显示是一个exec文件,此时用文件编辑.app打开文件。将第一行的

#!/anaconda3/bin/python

改为

#!/Users/你的用户/anaconda3/bin/python

此时重新打开终端后,输入conda,上面的报错消失。这就结束了吗,显然并没有。比如这时候你启动过jupyter,仍然会报错:

zsh: /Users/用户名/anaconda3/bin/jupyter: bad interpreter:
/anaconda3/bin/python3.7: no such file or directory

这是因为虽然你conda改了,但是别的都没改,当然你可以一点一点去手动改,推荐这样:

conda init zsh
(或者你使用bash的话就conda init bash)

会显示哪些文件被更改了,这时候重新打开shell即可。发现conda activate等这些命令也可以用了。但是此时打开spyder、或者jupyter时仍然不可以,报错:

/bin/bash: /PlayGround/anaconda3/bin/pythonw: No such file or directory

其实说到底还是相同的道理,有的文件里面路径没改,但是因为conda可以用了,你就可以选择去更新一下包,或者手动去改一些conda init 没搞定的文件。
如果是anaconda的其他环境,同理在/anaconda3/envs/py352/bin下找对应的文件

5、完善

更改jupyter 后,会报错:

zsh: /Users/用户名/anaconda3/envs/py352/bin/jupyter: bad interpreter: /anaconda3/envs/py352/bin/python: no such file or directory

需要改一下jupyter 的kernel.json,路径为:

/Users/用户名/anaconda3/share/jupyter/kernels/python3

将其中的python地址更改。
anaconda安装的其他环境,就在env下同理搞定即可。

更改完spyder文件后会报错:

/Users/用户名/anaconda3/bin/pythonw: line 3: /anaconda3/python.app/Contents/MacOS/python: No such file or directory

6、。。。

一套操作完了之后,后来发现了官方文档。。。
https://www.anaconda.com/how-to-restore-anaconda-after-macos-catalina-update/
大致翻译一下怎么用吧
1、
官方文档的命令:

curl -L https://repo.anaconda.com/pkgs/misc/cpr-exec/cpr-0.1.1-osx-64.exe -o cpr && chmod +x cpr

会报错:

curl: (77) error setting certificate verify locations:
  CAfile: /anaconda3/ssl/cacert.pem
  CApath: none

忽略证书验证位置即可:

curl -k -L https://repo.anaconda.com/pkgs/misc/cpr-exec/cpr-0.1.1-osx-64.exe -o cpr && chmod +x cpr

-k是忽略证书,-o是保存文件,否则是直接输出到屏幕,文件保存在当前目录下
2、
./cpr rehome 新路径
输入命令后出现如下界面

Detecting embedded prefix:   0%|                                                                                         | 32/203523 [00:00<20:52, 162.51it/s]^R
Detecting embedded prefix:  19%|███████████████▉  

3、

source ~/anaconda3/bin/activate

conda init

“~”代表了/Users/用户名
4、
将文件~/.conda/environments.txt中旧地址更改
5、
更改其余未尽文件,因为许多包通常在主目录的某些子文件夹中管理自己的配置文件,可以通过grep搜索含有关键字的文件:

cd 新anaconda
grep -R “ / Anaconda3”

把他们逐一改正

综上两种方法,本人自己鼓捣的,和官方的,都可以修复环境。

上一篇:win7安装python3.7出现setup failed,成功解决


下一篇:mac命令行切换python版本