問題
pycharm中部署了conda base環境,項目中 import sklearn
報錯,缺少DLL模塊 。
但是在Anaconda Prompt中 import sklearn
則成功。
發現
1 在Anaconda Prompt中(base)下用pip install
安裝庫 ,pycharm中有相應庫的增加;
而在(base)下用 conda install
安裝庫,pycharm無相應庫增加;
2 (base)下 conda uninstall scikit-learn
后可以再 pip uninstall scikit-learn
,
說明存在兩個scikit-learn包,conda install
和pip install
安裝的是不同的地方?環境?包?
3 上網查到,此報錯應該是sklearn依賴的包的版本與sklearn所需的版本不同(如過低),或與安裝的python版本不對應,或與機子的位數不對應,等原因。解決方法是,卸掉所有sklearn依賴的包,然后安裝sklearn(此時sklearn依賴的包也會同時安裝,並且是配套版本)。
解決方法
綜上,應該是conda install安裝的sklearn是好的,pip install安裝的sklearn與依賴包不配套。
解決方法1:把conda install到的這個環境給pycharm,然而並不會,因為至結束發現二者使用的解釋器是同一個,應該是安到一個環境?
解決方法2:把pip install到的這個環境配好。
故上網查:sklearn依賴的包有:
scipy
numpy (numpy+mkl?)
matplotlib
再在Anaconda Prompt中(base)下,卸載以上三個包,及scikit-learn包,
再pip install scikit-learn
包
在pycharm 中 import scikit-learn
成功!
建議
1 下次項目,決定使用虛擬環境,即選擇conda env下的python解釋器,
雖然首次安裝包需要多安一些包,但是避免系統環境(base)的包的混亂是十分重要的。
2 conda 與 pip
conda是包管理工具,可以管理python及以外的包
而pip是python安裝包的工具
再結合上述所說pycharm和pip安裝的同步,
故今后安裝python的包將統一使用pip install命令。
3 上述遺留的問題仍待探索。