【已解決】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”

把他們逐一改正

綜上兩種方法,本人自己鼓搗的,和官方的,都可以修復環境。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章