境配置指南:從安裝到虛擬環(huán)境管理)
很多人第一次接觸Python的時候都繞不開Anaconda這個名字。尤其是想做數(shù)據(jù)分析、機器學(xué)習(xí)、深度學(xué)習(xí)或者只想圖個省事把Python環(huán)境一次配好的人Anaconda幾乎就是默認答案。但有意思的是越是這種標配工具安裝和配置的時候越容易翻車。我身邊至少有三四個朋友在Anaconda安裝和PyCharm環(huán)境配置這兩步上卡過殼有的半天搞不定有的把自己電腦里原有的Python環(huán)境攪得一團糟最后不得不重裝系統(tǒng)。這篇博文就是把我這些年踩過的坑、總結(jié)出來的經(jīng)驗一次性倒出來。我會從Anaconda和PyCharm的下載安裝講起再重點說明PyCharm里如何正確關(guān)聯(lián)Anaconda的Python解釋器、如何創(chuàng)建和管理conda虛擬環(huán)境最后把最常見的幾個報錯和排查思路一并整理出來。不管你是剛?cè)腴T的小白還是被環(huán)境問題折磨過的老倒霉蛋照著這份流程走基本能一次性搞定。1. 安裝Anaconda之前先想清楚這3件事1.1 Anaconda到底幫你省了什么事Anaconda本質(zhì)上是一個Python發(fā)行版和一個包管理工具的結(jié)合體。它內(nèi)置了conda這個強大的依賴管理工具可以幫你安裝、升級、卸載Python包同時它還自帶了一大批常用的科學(xué)計算庫比如numpy、pandas、matplotlib、scikit-learn這些裝完就能直接import不用一個個去pip install這對新手來說友好度直接拉滿。很多人容易混淆的一個概念是Anaconda和Python不是二選一的關(guān)系A(chǔ)naconda自帶了一個Python解釋器。裝完Anaconda之后你的電腦里其實就有了一套Anaconda管理的Python環(huán)境。PyCharm這款I(lǐng)DE本身不包含Python解釋器它只是一個寫代碼的編輯器真正執(zhí)行代碼的是你配置給它的那個解釋器。所以所謂的PyCharm配置Anaconda環(huán)境干的事情其實就一件告訴PyCharm用Anaconda那個解釋器來跑我的代碼。另外還有一點容易被忽略conda不僅管Python包還能管非Python的依賴。比如裝一些C編譯的庫、CUDA版本的PyTorch、MKL加速的numpyconda都能幫你把背后的動態(tài)庫一起處理好。這是pip做不到的。所以做深度學(xué)習(xí)或者科學(xué)計算的人用conda管理環(huán)境是比純pip更穩(wěn)妥的選擇。1.2 版本選型Anaconda、Miniconda到底選誰Anaconda官網(wǎng)提供兩個主要產(chǎn)品一個是完整版Anaconda Distribution體積大概800MB到1GB裝完自帶幾百個常用包另一個是Miniconda體積只有幾十兆裝完只有conda和一個最基礎(chǔ)的解釋器其余包全部需要自己裝。我的建議很明確如果你主要做數(shù)據(jù)分析、機器學(xué)習(xí)或者不想折騰包管理直接裝完整版Anaconda省事。如果你對底層包比較熟悉機器上已經(jīng)有Python了只是想用conda來隔離環(huán)境選Miniconda會讓系統(tǒng)更輕量。如果你裝Anaconda只是為了應(yīng)付課設(shè)、畢設(shè)那也選Anaconda完整版最少折騰。版本號方面Anaconda的個人版安裝包命名是Anaconda3-2024.x-Windows-x86_64.exe這種格式2024.x里面帶的Python版本一般是Python 3.11或3.12這些都是當前比較主流的版本不用擔(dān)心太舊。網(wǎng)上總會有人問Anaconda哪個版本好我的回答是用官網(wǎng)最新的穩(wěn)定版就好不需要刻意去裝老版本除非你有一些特殊的兼容性要求。1.3 安裝前必須交代清楚的路徑規(guī)劃Windows上安裝Anaconda有一個問題是電腦里可能已經(jīng)裝過其他Python。這個情況特別容易引發(fā)混亂。裝Anaconda之前我建議你先確認一下自己需要不需要原來的Python如果原來那個Python是某些項目寫死路徑在用的那就老老實實把Anaconda當成一個獨立環(huán)境用不要讓Anaconda去搶系統(tǒng)的默認Python如果原來的Python只是自己裝來玩的那裝完Anaconda之后建議直接把原來Python卸載或者至少從環(huán)境變量里移除不然到時候在命令行敲python你都不知道到底調(diào)用的是哪個解釋器。安裝路徑方面盡量不要用帶空格的目錄也不要用中文目錄。最省心的方案是直接安裝在C盤的默認位置C:\Users\你的用戶名\anaconda3其實放在D盤根目錄比如D:\anaconda3也沒問題。關(guān)鍵是不能出現(xiàn)C:\Program Files\Anaconda3這種情況雖然一般也能用但有些命令行工具處理帶空格路徑時偶爾會出幺蛾子沒必要給自己埋雷。2. Anaconda下載與安裝完整實操以Windows 11為例2.1 下載渠道怎么選官網(wǎng)和鏡像站的取舍Anaconda官網(wǎng)下載地址是www.anaconda.com/download進入之后點Download就能拿到Windows版本的安裝包。但有一個很現(xiàn)實的問題Anaconda官網(wǎng)服務(wù)器在國外國內(nèi)訪問下載速度經(jīng)常慢得離譜動不動幾十分鐘下不完一個幾百MB的文件。所以國內(nèi)用戶我一般建議直接用鏡像站下載。清華大學(xué)的TUNA鏡像源、中科大的鏡像源都做了Anaconda安裝包的同步。用清華鏡像站舉例打開mirrors.tuna.tsinghua.edu.cn/anaconda/archive/里面按時間排列了所有歷史的Anaconda安裝包找最新日期的Anaconda3-2024.xx-Windows-x86_64.exe下載就行。鏡像站下載的好處一是速度快二是版本全。順便說一個我在實際中經(jīng)常用的判斷技巧安裝包日期越新里面帶的Python版本和包版本也越新但有些老項目的依賴可能跟不上最新版Python所以如果明確知道自己要跑的項目對Python版本有要求比如有的庫只支持Python 3.8~3.10可以先根據(jù)項目需求選一個對應(yīng)時期的Anaconda版本不必盲目追新。2.2 安裝向?qū)шP(guān)鍵步驟這兩件事千萬別勾錯拿到安裝包之后雙擊運行一路點擊Next會來到一個關(guān)鍵界面。Windows安裝Anaconda的時候有兩個選項需要額外注意Add Anaconda3 to my PATH environment variable這個選項默認是不勾選的。Register Anaconda3 as my default Python默認是勾選的。關(guān)于第一個Add to PATH網(wǎng)上眾說紛紜。我的實際經(jīng)驗是如果你只打算在PyCharm里用Anaconda不勾選PATH是最安全的選擇因為這樣不會干擾系統(tǒng)里其他依賴Python組件的軟件但如果你平時習(xí)慣在命令行里直接敲conda和python那就必須勾上或者安裝完之后手動配置環(huán)境變量。我自己在Windows上裝了專門的Python開發(fā)機時會勾上在裝了其他軟件需要用到系統(tǒng)Python的機器上就不勾二選一免得打架。重點說一下安裝完之后即使沒勾PATH也可以在開始菜單里找到Anaconda Prompt或Anaconda PowerShell這個終端入口打開這個終端同樣能正常使用conda命令不一定非要配置到全局環(huán)境變量。第二個Register as default Python選項建議保留勾選。這可以讓PyCharm等開發(fā)工具自動識別到Anaconda的Python解釋器省去手動找路徑的麻煩。安裝目錄選擇的時候留意路徑中不要有中文和空格。選好目錄之后點Install接下來就是漫長的安裝等待。安裝完成后桌面和開始菜單會出現(xiàn)Anaconda Navigator、Anaconda Prompt、Jupyter Notebook等圖標這說明安裝已經(jīng)成功了。2.3 安裝后必做的驗證與環(huán)境變量檢查安裝完成之后不要急著打開PyCharm先驗證一下Anaconda是不是真的能用了。打開系統(tǒng)自帶的cmd或者Windows PowerShell如果你之前勾選了Add to PATH那直接在任意目錄下輸入conda --version正常情況下會輸出conda的版本號比如conda 24.1.2。如果提示找不到命令那你需要手動把Anaconda的Scripts目錄加到PATH環(huán)境變量里。Windows 11手動添加環(huán)境變量的步驟右鍵此電腦選屬性。點擊高級系統(tǒng)設(shè)置。點擊環(huán)境變量。在系統(tǒng)變量里找到Path雙擊編輯。新建兩條一條填A(yù)naconda的安裝根目錄例如D:\anaconda3一條填D:\anaconda3\Scripts。保存后重新打開一個終端再試conda --version。我遇到過有人只加了根目錄沒加Scripts目錄導(dǎo)致conda命令能用但pip命令找不到這種細節(jié)值得留意。驗證完conda之后再輸入python --version確認輸出的是Anaconda自帶的Python版本我這里顯示的是Python 3.12.4。如果cmd里敲python彈出了Windows應(yīng)用商店的Python下載頁面說明你的PATH里系統(tǒng)Python的優(yōu)先級高于Anaconda需要去環(huán)境變量里把Anaconda的路徑往前調(diào)移除掉不用的系統(tǒng)Python路徑。3. PyCharm安裝版本選擇與中文設(shè)置3.1 社區(qū)版還是專業(yè)版別在選型上糾結(jié)太久PyCharm是JetBrains公司出品的Python IDE分兩個版本社區(qū)版Community和專業(yè)版Professional。社區(qū)版免費、開源支持Python開發(fā)、調(diào)試、代碼補全、版本控制還支持conda環(huán)境和虛擬環(huán)境管理專業(yè)版收費但可以使用Django、Flask等Web框架的專屬功能以及數(shù)據(jù)庫工具、遠程解釋器等功能。我的建議是做數(shù)據(jù)分析、機器學(xué)習(xí)、日常腳本社區(qū)版完全夠用不用聽人說專業(yè)版才好就盲目去找什么激活碼。專業(yè)版可以申請學(xué)生免費授權(quán)如果你是學(xué)生或者老師直接用學(xué)校郵箱到JetBrains官網(wǎng)申請即可官方會回復(fù)一封包含激活鏈接的郵件。下載的時候認準官網(wǎng)地址www.jetbrains.com/pycharm/download不要跑到第三方站點亂下載。頁面上會有兩個下載按鈕選擇Community下的對應(yīng)系統(tǒng)版本下載Windows安裝包。下載完成之后是exe文件點擊安裝一路Next就能完成幾乎沒什么坑。安裝過程中有個Update PATH variable的選項建議選上這樣后續(xù)在命令行可以用pycharm命令快捷啟動項目。3.2 新版PyCharm的安裝要點與中文化PyCharm安裝好之后第一次啟動會讓你選擇UI主題Darcula暗色還是Light亮色選哪個全看個人喜好。接下來會進入一個歡迎界面有New Project、Open等選項先不用急著建項目我們后面還要配置解釋器。說完英文界面很多新手問得最多的問題是PyCharm怎么設(shè)置中文。新版PyCharm2020.1之后提供了一個官方的中文語言包插件操作方式很簡單打開PyCharm進入File SettingsWindows或PyCharm PreferencesmacOS。在左側(cè)找到Plugins點擊Marketplace標簽頁。在搜索框輸入Chinese會看到Chinese Language Pack EAP這個插件。點擊Install安裝安裝完成后重啟PyCharm界面就是中文了。這個官方漢化包不是100%覆蓋某些地方仍然保留英文但整體體驗已經(jīng)很友好。對于習(xí)慣英文界面的人不裝也沒關(guān)系。我個人的習(xí)慣是保留英文界面因為很多教程、報錯信息都是英文的看多了也就習(xí)慣了但如果你英文基礎(chǔ)一般裝上中文語言包能顯著降低學(xué)習(xí)門檻。4. PyCharm關(guān)聯(lián)Anaconda解釋器核心操作詳解4.1 第一次啟動的歡迎頁新手引導(dǎo)很多人安裝完Anaconda和PyCharm之后卡在了怎么讓PyCharm用上Anaconda這一步。其實邏輯非常簡單PyCharm是一個編輯器它本身不帶Python解釋器你需要告訴它我的解釋器在哪里。第一次打開PyCharm歡迎界面點擊New Project新建項目會跳轉(zhuǎn)到一個項目配置頁面。這個頁面中有一個Previously configured interpreter使用已配置的解釋器的選項點擊它旁邊的Add Interpreter按鈕就可以手動關(guān)聯(lián)Anaconda環(huán)境了。另一種情況是項目已經(jīng)建好了那就進入File Settings Project: 你的項目名 Python Interpreter點擊右側(cè)的齒輪圖標選擇Add Interpreter。4.2 解釋器配置的一個關(guān)鍵路徑要選對在彈出的Add Python Interpreter對話框里選擇左側(cè)的Conda Environment然后選擇右邊的Existing environment使用已存在的conda環(huán)境。接下來會下拉選擇或者手動找到解釋器路徑。這里有一個非常容易踩坑的點解釋器路徑一定要選到Anaconda目錄下的python.exe而不是conda.exe也不是_conda.exe。我見過不少新手在這里選錯選到了Anaconda3\Scripts\conda.exe結(jié)果PyCharm直接報錯Invalid Python interpreter或者Python packaging tools not found。正確路徑是D:\anaconda3\python.exe這個是最重要的根環(huán)境解釋器。如果你的安裝目錄是默認的C:\Users\用戶名\anaconda3\那對應(yīng)的就是C:\Users\用戶名\anaconda3\python.exe選好之后PyCharm會自動識別出這個解釋器對應(yīng)的conda環(huán)境并顯示出現(xiàn)在環(huán)境里已安裝的包列表。這時候再點擊OK解釋器就配置成功了。另一種更懶的辦法是在Add Interpreter時選擇Conda Environment Create new environmentPyCharm會自動調(diào)用conda去創(chuàng)建一個全新的虛擬環(huán)境好處是不會污染根環(huán)境適合每個項目獨立建一套環(huán)境。這個方法我放到下一章展開講。4.3 用Anaconda環(huán)境創(chuàng)建項目的完整流程解釋器配置好之后后續(xù)每次新建項目都可以直接用這個配置。實際操作中我更推薦的做法是在Anaconda里先創(chuàng)建好虛擬環(huán)境再在PyCharm里選擇這個環(huán)境作為解釋器。這種方式更自主后面維護起來也更清晰。完整流程是這樣的打開Anaconda Prompt記住是Anaconda Prompt不是普通cmd。輸入conda create -n ml python3.11創(chuàng)建一個名為ml的虛擬環(huán)境Python版本指定為3.11??吹絇roceed?輸入y回車。創(chuàng)建完成后輸入conda activate ml激活環(huán)境。在這個環(huán)境里安裝項目需要的包比如conda install numpy pandas matplotlib。回到PyCharm新建項目時選擇Conda Environment勾選Existing environment解釋器路徑選到D:\anaconda3\envs\ml\python.exe。這樣項目的解釋器就指向了我們剛創(chuàng)建的ml虛擬環(huán)境項目里import的numpy、pandas都是裝在這個環(huán)境里的不會影響Anaconda根環(huán)境也不會影響電腦上其他項目的依賴。這套每個項目一個conda環(huán)境的思路是從源頭上根治依賴沖突的最佳實踐。5. 把conda虛擬環(huán)境用到極致創(chuàng)建、切換與依賴管理5.1 為什么一定要用虛擬環(huán)境不少初學(xué)者很不理解虛擬環(huán)境的意義覺得不就是裝個包嘛直接pip install不行嗎。把虛擬環(huán)境理解成一個獨立的沙盒就清楚了你在沙盒里隨便裝任何版本的庫都不會影響外面系統(tǒng)的Python環(huán)境。舉個例子項目A需要numpy 1.26項目B只能兼容numpy 1.21要是都裝在全局環(huán)境里那裝一個就得卸一個來回折騰用虛擬環(huán)境項目A用一個環(huán)境裝1.26項目B用另一個環(huán)境裝1.21互不干擾。conda虛擬環(huán)境還有一個額外優(yōu)勢conda在創(chuàng)建環(huán)境時可以指定Python版本比如conda create -n py38 python3.8這樣即使你機器上裝的是Python 3.12也能輕松擁有一個Python 3.8的環(huán)境來跑老項目。這一點是PyCharm自帶的virtualenv做不到的——virtualenv使用的基礎(chǔ)解釋器通常是機器上已裝的Python。5.2 虛擬環(huán)境的創(chuàng)建、激活與刪除我整理了conda虛擬環(huán)境的常用命令存下來基本就夠日常使用了操作命令創(chuàng)建新環(huán)境conda create -n 環(huán)境名 python3.11創(chuàng)建時順便裝包conda create -n 環(huán)境名 python3.11 numpy pandas激活環(huán)境conda activate 環(huán)境名退出當前環(huán)境conda deactivate查看所有環(huán)境conda env list刪除環(huán)境conda env remove -n 環(huán)境名克隆環(huán)境conda create -n 新環(huán)境名 --clone 舊環(huán)境名導(dǎo)出環(huán)境依賴conda env export environment.yml從文件創(chuàng)建環(huán)境conda env create -f environment.yml導(dǎo)出環(huán)境依賴那一條用environment.yml可以把整個環(huán)境的包列表和版本都打包成文件交給別人或者換新電腦時一鍵就能復(fù)現(xiàn)一模一樣的Python環(huán)境。這在團隊協(xié)作和部署復(fù)現(xiàn)實驗結(jié)果的時候是神器。5.3 包管理與加速源配置conda安裝包默認從官方源下載國內(nèi)網(wǎng)絡(luò)環(huán)境下速度不穩(wěn)定經(jīng)常出現(xiàn)卡在Solving environment或者下載到一半斷掉的狀況。解決辦法是換成國內(nèi)鏡像源。在命令行依次執(zhí)行以下命令把conda的默認源換成清華TUNA鏡像源conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes執(zhí)行完之后可以打開用戶目錄下的.condarc文件驗證一下確認配置生效了。注意不要手動隨便改這個文件改壞了會讓conda報cannot read from .condarc之類的錯誤。換完源之后再用conda install 包名明顯會順暢很多。我實測下來清華源的同步速度基本穩(wěn)定日常教學(xué)用的numpy、pandas、matplotlib這些包幾秒鐘就能開始下載。有一點需要提醒conda-forge這個源非常強大里面有海量的包但有時候安裝一個包會連帶更新一堆依賴耗時很長。如果只是為了裝一個純Python的包先試pip install 包名更快conda適合安裝那些有二進制依賴的包比如pytorch、cudatoolkit、mkl之類的。6. 常見問題與排查技巧實錄6.1 命令找不到conda怎么辦新裝的Anaconda打開cmd輸入conda提示不是內(nèi)部或外部命令或command not found十有八九是環(huán)境變量沒配置好。Windows上的排查步驟確認Anaconda安裝目錄下有沒有Scripts文件夾里面是否包含conda.exe。確認環(huán)境變量Path里是否同時包含了Anaconda根目錄和Scripts目錄。修改環(huán)境變量后必須重新打開終端才能生效已經(jīng)打開的cmd或PowerShell不會自動刷新環(huán)境變量。實在不想配環(huán)境變量直接用Anaconda Prompt這個終端入口就行。還有種情況是conda命令能在Anaconda Prompt里用但在普通的cmd里不能用這通常就是PATH沒配或者配錯。配環(huán)境變量的時候檢查一下路徑中的分隔符別寫錯成一行。6.2 conda下載慢或403 Forbidden怎么處理在配置conda環(huán)境時碰到的經(jīng)典報錯是unavailableinvalidchannel: http 403 forbidden for channel anaconda/pkgs/main。這個報錯的本質(zhì)是conda在嘗試從官方或者某個自定義的channel地址請求數(shù)據(jù)被對方拒絕了。常見原因有兩個一是配置的channel地址寫錯了二是鏡像源不穩(wěn)定臨時抽風(fēng)。排查和解決辦法按順序來檢查.condarc文件里的channel地址確認URL拼寫完整、以/結(jié)尾。輸入conda clean -i清理一下conda的索引緩存。執(zhí)行conda update --all再試。如果用的是第三方源臨時切回官方源測一下conda config --remove-key channels然后再試conda info看看當前通道情況。依然不行直接刪除.condarc文件恢復(fù)默認設(shè)置重新安裝包。我還遇到過一種情況就是配置了多個channel但其中一個channel里根本沒有同時包含所有需要的包conda在反復(fù)請求不同channel時被打斷報錯。解決思路很簡單減少channel數(shù)量或者在conda install時用-c 指定通道來限定來源。6.3 PyCharm里import numpy報錯怎么辦解釋器配好了PyCharm也能正常跑了但一import numpy就報ModuleNotFoundError這種事我自己也碰過。這通常不是因為numpy沒裝而是你用的解釋器環(huán)境不對。比如PyCharm項目用的解釋器是Anaconda根環(huán)境但你在命令行里pip install numpy裝的是另一個Python的環(huán)境兩邊對不上。排查方法在PyCharm底部打開Python Packages窗口搜索numpy看它顯示的是已安裝還是未安裝。在PyCharm的Settings Project Python Interpreter里看清當前項目用的是哪個解釋器路徑。如果路徑不是你期望的Anaconda環(huán)境點擊齒輪重新添加解釋器。如果解釋器是對的但包沒裝直接在PyCharm的Python Packages窗口里點安裝或者用終端先激活對應(yīng)虛擬環(huán)境再裝。還有一類情況是代碼能跑但PyCharm編輯器里標紅提示未解析的引用。這種絕大多數(shù)是PyCharm的索引問題點一下File Invalidate Caches重啟PyCharm就好了。7. 讓環(huán)境長期穩(wěn)定的幾個使用習(xí)慣寫到這里核心安裝和配置流程已經(jīng)全部講完了。最后再補幾個我個人覺得非常重要的使用習(xí)慣這些習(xí)慣能讓你以后少踩很多坑。第一不要在根環(huán)境里裝一堆項目依賴。Anaconda的根環(huán)境相當于一個基礎(chǔ)系統(tǒng)裝太多亂七八糟的包會讓它越來越臃腫出問題的概率也更高。每個項目單獨創(chuàng)建虛擬環(huán)境就像蓋房子之前先打地基麻煩一次省心一年。第二用conda管理環(huán)境用pip補缺。conda負責(zé)創(chuàng)建環(huán)境和安裝有二進制依賴的包pip負責(zé)安裝純Python的輪子。如果你在pip裝包時不小心覆蓋了conda環(huán)境里的關(guān)鍵依賴最穩(wěn)妥的恢復(fù)方式是重新conda install相關(guān)的包讓它回到預(yù)期版本一般沒必要刪掉整個環(huán)境重來。第三定期記錄環(huán)境的依賴快照。項目做完一個階段就用conda env export environment.yml把環(huán)境導(dǎo)出一份丟進項目倉庫里。以后無論是換電腦、換同事的機器還是自己要復(fù)現(xiàn)結(jié)果都能用一份文件把它原樣拉起來。這事看著不起眼真需要的時候能救命。說句實在話Anaconda和PyCharm這種環(huán)境配置本身并不難難的是把各種細節(jié)都照顧到。版本選型、PATH變量、解釋器路徑、虛擬環(huán)境隔離每一個環(huán)節(jié)稍微疏忽一點后面就可能連環(huán)爆雷。希望這份實操記錄能幫你少走一些彎路。如果你照著配完還是有問題仔細看看卡在哪一步回到對應(yīng)章節(jié)再核對一遍大部分問題都能定位到。