切換
舊版
前往
大廳
主題

windows下miniconda與原系統python的衝突

NEKROS | 2023-05-19 14:34:10 | 巴幣 0 | 人氣 218

    最近在試著用miniconda這個虛擬環境的應用,不選anaconda是因為太肥了。
但是因為我原本的桌電(win11)早已安裝了python3.10.10,因此在用miniconda時遇到了一些麻煩。
    (題外話,若是直接用windows的cmd而非conda的prompt,則啟動時要輸入activate env_name而非conda activate env_name)

    以下皆以windows環境講述,ubuntu我上次跑miniconda好像沒遇到

    首先基本上安裝miniconda或是anaconda都建議電腦完全是沒有安裝過python的,這樣在安裝時出現的這個畫面中第二個選項就可以安心地選下去(第一個選項可選可不選,通常建議手動自己去加環境變數,避免可能的路徑汙染),然後到最後安裝完便可以正常使用。

    然而如果你跟我一樣犯賤想要留下原本系統的python又想要用miniconda(其實我應該先試試venv才對就是了)建立測試環境。那麼第二個選項可能就先不要勾選,若勾選了"應該"以後再cmd叫出python就不是系統安裝的那個了

    安裝完後很高興地直接建立了一個python3.10的虛擬環境,並安裝了scikit-learn,然而你就會發現import sklearn會找不到package。
心情示意圖

    其實這問題就是因為剛才安裝時第二個選項未勾選,因此在miniconda下叫python3,實際上是叫出系統原本安裝的python而非miniconda的python。而在miniconda下用conda install安裝的package當然是在miniconda虛擬環境的目錄下,因此找不到package是非常正常的

    簡單測試的方法就是直接在cmd輸入python3 --version,若沒有出現conda相關的內容就代表使用的是系統的python,然後在python的Interactive Mode下輸入sys.path會發現沒有conda相關的path。

要解決的話有幾種方式:
    第一種就是在安裝時把第二個選項勾選,當然建議電腦原本不要有安裝python

    第二種就是手動去改系統path,不過若原本電腦有python的話可能一樣會有衝突,而且每虛擬環境應該都要手動做這動作,不然就是要確保conda path的優先度最高。這我沒試過不確定

    第三種就是簡單粗暴,直接去conda的虛擬環境資料夾執行python.exe,在windows下可在cmd輸入where python找到path,然後直接到那去執行exe。但若是使用vscode、jupyter的話還要確保會選擇到虛擬環境的python而非原本系統的python,這之後再來研究

6/3編輯:jupyter的話好像會直接抓到conda環境的python所以不用再去額外設定東西

創作回應

更多創作