最近我在用Macbook Pro練習PyTorch的時候,發現明明在終端已經用pip安裝了PyTorch,但在pycharm運行時總是報錯:No module named torch. 但是我把同樣的代碼用Spyder跑就沒有問題,感動很費解,找了很多資料,終於弄明白了。原來Pycharm、Spyder和終端用的不是同一個環境,在終端安裝的地方沒有用在pycharm里面。
下面記錄一下解決辦法:
1、安裝Anaconda3之后,有一個Anaconda Navigator應用程序,打開它,可以在其中的左側邊欄看到Environments這一個Tab,點擊Environments 會列出由Anaconda管理的環境列表(把鼠標懸停在任意一個環境名稱上,將會顯示出該環境所在的目錄路徑,如/anaconda3/envs/my_workspace,這個目錄可用於后續配置pycharm的運行環境),環境列表右側是每個環境包含的python包列表【每個環境就類似一個獨立的運行空間(與docker, virtualenv等概念類似),我們可以在一個環境中安裝我們需要的其他第三方python包,如pandas,scikit-learn等】,我們寫的項目代碼需要選擇一個環境作為依托。
2、安裝完Anaconda之后,打開Mac端,命令行的前綴會變成(base)Mac主機名:~當前用戶名$,其中的base就是Anaconda的其中一個Environment, 就是當前被選中的Python運行環境,也是Anaconda Navigator的環境列表中的第一項。
3、管理Conda環境的方法有兩種:
(1)通過Anaconda Navigator的圖形界面,創建、刪除環境
(2)通過Mac的命令行終端程序(terminal)輸入conda命令來創建、激活、刪除環境(conda命令的使用方法可參考: 使用conda管理python環境)我推薦使用conda命令,因為速度快。
4、選定一個環境之后,怎么在其中安裝、卸載python包,如pandas、tensorflow?有三種途徑:
(1)在終端利用conda命令:conda install 包名,或conda install 包名==包的版本號,如安裝tensorflow2.0.0,可使用conda install tensorflow==2.0.0
具體方法可參考:https://zhuanlan.zhihu.com/p/22678445 ,如果conda install時提示找不到指定的包,則需要添加Python包的源,國內可使用清華的源,前面的鏈接也有添加源的方法。
(2)在終端適用pip,如pip install 包名==版本號,pip uninstall 包名。
(3)在Anaconda Navigator的圖形界面進行安裝、刪除python包的操作。但其操作效率不如前兩種命令行的方式快。
5、決定是否需要創建額外的環境:
(1)如果開發工具使用Anaconda自帶的Spyder,那么你無需在Anaconda Navigator或使用conda命令額外配置環境,使用默認的環境(base)即可,如需安裝第三方python包,通過conda或pip命令即可。
(2)如果使用PyCharm作為開發工具,則需要在base之外,再創建一個自定義的環境(使用conda命令或Anaconda Navigator)。再在pycharm進行設置使用這個自定義的環境。
使用conda命令創建自定義環境(如命名為my_workspace)之后,在pycharm Mac版中,點擊電腦左上角的pycharm按鈕,再Preferance-Project:我的工程名稱->Project Interpreter->在右側的Project Interpreter下拉框的右側->Select All...->左下角的加號->選擇左側的Conda Enviroment->單選Existing Environment->設置Interpreter的路徑為我們在Anaconda Navigator中看到的my_workspace環境的路徑(如本文的第1部分所述)【注意:進入該目錄之后,需要繼續往下找,找到其中的python可執行文件,因此完整路徑為/anaconda3/envs/my_workspace/bin/python3.7 】,再點擊OK即可。
這樣,以后如果這個工程再需要安裝任何python包都可以通過conda命令和Anaconda Navigator來進行安裝管理。