境配置)
1. 為什么2025年還值得認(rèn)真裝一次Anaconda先說結(jié)論Anaconda依然是目前Windows平臺(tái)上把Python、conda、科學(xué)計(jì)算棧一次性配齊的最省心方案尤其適合剛?cè)腴TPython、要跑數(shù)據(jù)分析或深度學(xué)習(xí)、又不想在環(huán)境問題上反復(fù)折騰的人。我從2018年開始用conda管理環(huán)境中間經(jīng)歷過無數(shù)次裝完P(guān)ython發(fā)現(xiàn)pip裝不上包numpy和scipy版本打架換電腦后環(huán)境全部重來的崩潰現(xiàn)場最后穩(wěn)定下來的方案始終是Anaconda打底、conda管環(huán)境、pip做補(bǔ)充。這套組合到今天依然能打。很多人對(duì)Anaconda有誤解覺得它臃腫占空間啟動(dòng)慢。這些吐槽有一半是對(duì)的——完整版裝完確實(shí)要占3到5個(gè)G預(yù)裝了上百個(gè)包其中一大半你可能一年都用不到。但另一半是誤解Anaconda真正的價(jià)值不在那些預(yù)裝包而在于它自帶了一套獨(dú)立于系統(tǒng)Python的環(huán)境管理機(jī)制。你可以把它理解成一個(gè)Python版本倉庫依賴調(diào)度中心需要什么環(huán)境就開一個(gè)互不干擾刪掉也不影響系統(tǒng)。這個(gè)能力是直接用官網(wǎng)Python安裝包永遠(yuǎn)給不了你的。這篇內(nèi)容我會(huì)按真實(shí)操作順序走一遍從下載哪個(gè)版本、安裝時(shí)哪些勾必須打、裝完怎么驗(yàn)證、conda基礎(chǔ)命令怎么用、換源怎么配、虛擬環(huán)境怎么建、和PyCharm/VSCode怎么對(duì)接一直到那些新手最容易踩的坑比如conda不是內(nèi)部或外部命令、conda activate報(bào)init錯(cuò)誤、conda create慢到懷疑人生。每個(gè)環(huán)節(jié)我都會(huì)說清楚為什么這么做而不是只丟一串命令讓你抄。適合誰看完全沒接觸過Python的純小白、裝過Python但被環(huán)境問題折磨過的半新手、需要給團(tuán)隊(duì)統(tǒng)一環(huán)境的開發(fā)者、以及要配深度學(xué)習(xí)環(huán)境PyTorch/TensorFlow的同學(xué)。如果你已經(jīng)能熟練用conda管理多環(huán)境這篇可以當(dāng)速查手冊(cè)跳著看。2. 安裝前的關(guān)鍵決策版本、渠道與磁盤規(guī)劃2.1 選Anaconda還是Miniconda這是個(gè)真問題每次有人問我裝哪個(gè)我都會(huì)先反問一句你是要開箱即用還是按需精簡這兩個(gè)訴求對(duì)應(yīng)兩個(gè)不同的發(fā)行版。Anaconda是完整發(fā)行版裝完自帶conda、Python、Jupyter Notebook、Spyder、numpy、pandas、matplotlib、scikit-learn等一大票常用庫。好處是裝完就能直接跑數(shù)據(jù)分析不用再一個(gè)個(gè)裝包壞處是體積大安裝包約900MB裝完3-5GB預(yù)裝包版本可能不是你想要的。Miniconda是精簡版只包含conda、Python和少量基礎(chǔ)依賴安裝包約80MB裝完幾百M(fèi)B。所有庫都要自己按需裝。好處是干凈、可控、體積小壞處是新手裝完發(fā)現(xiàn)怎么連numpy都沒有還得再學(xué)一遍conda install。我的建議很直接第一次接觸Python、或者主要用來做數(shù)據(jù)分析/機(jī)器學(xué)習(xí)入門裝Anaconda已經(jīng)熟悉conda、或者要在服務(wù)器/多臺(tái)機(jī)器上部署、或者磁盤緊張裝Miniconda。兩者后續(xù)用法完全一致conda命令通用不存在裝了Miniconda就學(xué)不到東西的問題。對(duì)比項(xiàng)AnacondaMiniconda安裝包大小約900MB約80MB裝完占用3-5GB300-600MB預(yù)裝庫上百個(gè)常用庫僅condaPython適合人群新手、數(shù)據(jù)分析入門老手、服務(wù)器部署后續(xù)操作conda install按需增刪同左2.2 下載渠道與版本選擇下載只認(rèn)準(zhǔn)一個(gè)地方Anaconda官方分發(fā)站點(diǎn)。搜索引擎里排在前面的XX軟件園XX下載站提供的安裝包我強(qiáng)烈不建議用——不是危言聳聽這類站點(diǎn)的安裝包被二次打包、捆綁推廣甚至植入的情況并不少見裝完系統(tǒng)里多出一堆莫名其妙的東西排查起來非常煩。版本選擇上2025年當(dāng)前主推的是Anaconda3系列對(duì)應(yīng)Python 3.xAnaconda2Python 2.7早已停止維護(hù)除非你有祖?zhèn)鞔a必須跑Python 2否則一律選Anaconda3。具體到小版本選官網(wǎng)首頁給出的最新穩(wěn)定版即可不用糾結(jié)是2024.10還是2025.03conda后續(xù)可以隨時(shí)升級(jí)Python版本。下載時(shí)注意區(qū)分操作系統(tǒng)Windows選.exemacOS區(qū)分Intel芯片x86_64和Apple Silicon芯片arm64Linux選.sh。選錯(cuò)了裝不上或者跑起來性能打折尤其是Mac用戶M系列芯片一定要下arm64版本。提示下載頁面如果加載慢可以換用國內(nèi)鏡像站點(diǎn)獲取安裝包但務(wù)必核對(duì)文件大小和官方一致安裝前有條件的話校驗(yàn)一下哈希值。2.3 安裝路徑與磁盤規(guī)劃安裝路徑這件事我踩過的坑值得單獨(dú)說。默認(rèn)路徑通常是C:\Users\你的用戶名\anaconda3很多人直接下一步就裝了。問題在于Anaconda會(huì)隨著你創(chuàng)建的環(huán)境越來越多而持續(xù)膨脹一個(gè)PyTorch環(huán)境輕松吃掉5-8GB三五個(gè)環(huán)境下來C盤就告急。我的做法是如果C盤空間充足剩余50GB以上用默認(rèn)路徑最省事因?yàn)槁窂嚼餂]有空格和中文后續(xù)各種工具對(duì)接不會(huì)出幺蛾子。如果C盤緊張裝到D盤或E盤但路徑必須滿足兩個(gè)條件全英文、無空格。比如D:\anaconda3可以D:\軟件\anaconda 3絕對(duì)不行——空格和中文會(huì)讓某些編譯工具、腳本解析出問題報(bào)錯(cuò)信息還特別隱晦新手根本想不到是路徑的鍋。另外提醒一句安裝路徑一旦確定后續(xù)不要手動(dòng)移動(dòng)或重命名文件夾。conda內(nèi)部大量配置寫死了絕對(duì)路徑你挪一下整個(gè)環(huán)境就廢了只能重裝。3. Windows平臺(tái)Anaconda安裝全流程實(shí)操3.1 安裝向?qū)е痦?xiàng)拆解雙擊下載好的.exe文件進(jìn)入安裝向?qū)?。前面幾步歡迎頁、許可協(xié)議直接Next和I Agree。到Installation Type這一步選Just Me (recommended)除非你明確知道自己在做什么、需要給這臺(tái)機(jī)器的所有用戶裝。選All Users需要管理員權(quán)限而且后續(xù)某些包安裝時(shí)權(quán)限問題會(huì)更麻煩。接下來是安裝路徑選擇按上一節(jié)的原則填。填完Next來到整個(gè)安裝過程中最關(guān)鍵的一步——Advanced Options這里有兩個(gè)勾選框我逐個(gè)說。第一個(gè)勾Add Anaconda3 to my PATH environment variable。官方默認(rèn)不勾并且標(biāo)注了Not recommended。很多教程讓你勾上理由是勾了才能在命令行直接用conda。但我明確建議不要勾。原因是把Anaconda加進(jìn)系統(tǒng)PATH后它會(huì)覆蓋系統(tǒng)里其他Python導(dǎo)致你后來裝的別的工具、別的Python版本全部串味出現(xiàn)明明裝了包卻import不到的詭異問題。正確做法是裝完后用Anaconda自帶的Anaconda Prompt來操作或者手動(dòng)初始化shell這個(gè)后面會(huì)講。第二個(gè)勾Register Anaconda3 as my default Python 3.x。這個(gè)建議勾上。它會(huì)讓Anaconda注冊(cè)為系統(tǒng)默認(rèn)PythonPyCharm、VSCode等IDE能自動(dòng)識(shí)別到省去手動(dòng)配置解釋器的麻煩。它和PATH那個(gè)勾是兩回事不會(huì)造成環(huán)境串味。點(diǎn)Install等待5-15分鐘取決于磁盤速度完成后Finish。到這里安裝本身結(jié)束了但真正的工作才剛開始。3.2 驗(yàn)證安裝是否成功裝完先別急著寫代碼做三步驗(yàn)證。第一步從開始菜單找到并打開Anaconda Prompt不是cmd不是PowerShell。這個(gè)專用終端會(huì)自動(dòng)激活base環(huán)境是驗(yàn)證和日常操作最穩(wěn)的入口。打開后你應(yīng)該看到命令行前面有個(gè)(base)字樣說明base環(huán)境已激活。第二步輸入以下命令逐條驗(yàn)證conda --version python --version conda infoconda --version應(yīng)該輸出類似conda 24.x.xpython --version輸出Python 3.12.x之類conda info會(huì)打印一堆環(huán)境信息重點(diǎn)看base environment和active environment兩行確認(rèn)base環(huán)境路徑正確。第三步驗(yàn)證核心庫能否導(dǎo)入。輸入python進(jìn)入交互模式然后import numpy import pandas print(numpy.__version__) print(pandas.__version__) exit()能正常打印版本號(hào)說明預(yù)裝庫沒問題。如果報(bào)ModuleNotFoundError要么是裝到了Miniconda本來就沒預(yù)裝要么是環(huán)境激活錯(cuò)了。3.3 讓conda在普通終端也能用Anaconda Prompt雖然穩(wěn)但每次都要從開始菜單找用久了嫌煩。想讓conda在普通cmd或PowerShell里也能用正確姿勢是運(yùn)行初始化命令而不是手動(dòng)改PATH。在Anaconda Prompt里執(zhí)行conda init它會(huì)自動(dòng)檢測你用的shellcmd、PowerShell、bash等并寫入初始化腳本。執(zhí)行完關(guān)閉并重新打開終端新終端里就能直接用conda了。如果只想給某個(gè)shell初始化可以指定比如conda init powershell。這里就引出了新手最常遇到的兩個(gè)報(bào)錯(cuò)我在第5節(jié)會(huì)詳細(xì)拆解先記住結(jié)論conda不是內(nèi)部或外部命令是因?yàn)闆]初始化或初始化后沒重開終端conda activate報(bào)run conda init before是因?yàn)閟hell沒初始化跑一遍conda init重開即可。4. conda核心操作換源、環(huán)境與包管理4.1 換源解決下載慢的根本手段裝完Anaconda第一件該做的事就是換源。默認(rèn)源在國外conda install一個(gè)稍大的包能慢到讓你懷疑網(wǎng)絡(luò)壞了conda create建環(huán)境時(shí)卡在Solving environment十幾分鐘是常態(tài)。換成國內(nèi)鏡像源后速度通常能提升一個(gè)數(shù)量級(jí)。換源的本質(zhì)是修改conda的配置文件.condarc把包下載地址指向國內(nèi)鏡像。操作方式有兩種我推薦命令行方式不容易出錯(cuò)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 --set show_channel_urls yes上面用的是清華源也可以用阿里源、中科大源效果都差不多。執(zhí)行完可以用conda config --show channels查看當(dāng)前配置的源列表。注意換源后如果某個(gè)包在鏡像里找不到會(huì)報(bào)PackagesNotFoundError這時(shí)候可以臨時(shí)用-c參數(shù)指定官方源裝或者把該包用pip裝。另外鏡像同步有延遲剛發(fā)布的新版本包可能鏡像里還沒有。還有一個(gè)坑換源后如果之前已經(jīng)建過環(huán)境舊環(huán)境不會(huì)自動(dòng)受益但新裝的包會(huì)走新源。如果發(fā)現(xiàn)換源后還是慢檢查一下是不是.condarc里同時(shí)存在多個(gè)源導(dǎo)致conda在多個(gè)源之間反復(fù)查詢可以精簡到只留一兩個(gè)。4.2 虛擬環(huán)境conda最核心的能力如果說conda只讓你學(xué)一個(gè)功能那一定是虛擬環(huán)境。它的價(jià)值在于不同項(xiàng)目依賴不同版本的庫甚至不同版本的Python虛擬環(huán)境讓它們各自獨(dú)立、互不污染。舉個(gè)真實(shí)場景你手上有個(gè)老項(xiàng)目要Python 3.8 PyTorch 1.8同時(shí)要學(xué)一個(gè)新項(xiàng)目用Python 3.12 PyTorch 2.x。如果都裝在base環(huán)境里版本沖突無解。正確做法是建兩個(gè)環(huán)境切換使用。創(chuàng)建環(huán)境的標(biāo)準(zhǔn)命令conda create -n myenv python3.11-n后面是環(huán)境名python3.11指定Python版本。執(zhí)行后會(huì)列出將要安裝的包輸入y確認(rèn)。建完用conda activate myenv激活命令行前綴變成(myenv)就對(duì)了。退出用conda deactivate。常用環(huán)境管理命令整理成表操作命令創(chuàng)建環(huán)境conda create -n 環(huán)境名 python版本激活環(huán)境conda activate 環(huán)境名退出環(huán)境conda deactivate查看所有環(huán)境conda env list刪除環(huán)境conda remove -n 環(huán)境名 --all克隆環(huán)境conda create -n 新名 --clone 舊名導(dǎo)出環(huán)境conda env export environment.yml從文件恢復(fù)conda env create -f environment.ymlconda env export這個(gè)功能特別值得用。它把當(dāng)前環(huán)境的所有包和版本導(dǎo)出成yml文件換電腦或者給同事復(fù)現(xiàn)時(shí)一條命令就能還原出一模一樣的環(huán)境。做項(xiàng)目交接、論文復(fù)現(xiàn)實(shí)驗(yàn)時(shí)這是標(biāo)配操作。4.3 包管理conda install與pip的分工裝包有兩個(gè)工具conda和pip。很多人糾結(jié)用哪個(gè)我的原則是能用conda裝的就用condaconda沒有的再用pip。原因在于conda不僅管Python包還管非Python的二進(jìn)制依賴比如CUDA、MKL數(shù)學(xué)庫它裝的包是預(yù)編譯好的兼容性有保障。pip裝的是PyPI上的包純Python包沒問題但涉及編譯的包比如某些需要C擴(kuò)展的在Windows上經(jīng)常因?yàn)槿本幾g器而裝失敗。conda install numpy pandas matplotlib conda install pytorch torchvision -c pytorch pip install 某個(gè)conda沒有的包注意在同一個(gè)環(huán)境里混用conda和pip時(shí)先用conda裝完所有能裝的最后再用pip補(bǔ)。反過來先pip后condaconda可能會(huì)覆蓋或沖突pip裝的版本。另外pip裝的包c(diǎn)onda list里也能看到但來源標(biāo)記不同排查問題時(shí)留意。5. 高頻報(bào)錯(cuò)與排查技巧實(shí)錄5.1 conda不是內(nèi)部或外部命令這是Windows新手遇到率最高的報(bào)錯(cuò)沒有之一?,F(xiàn)象是在cmd或PowerShell里敲conda提示不是內(nèi)部或外部命令也不是可運(yùn)行的程序或批處理文件。根因就一個(gè)當(dāng)前終端不認(rèn)識(shí)conda這個(gè)命令。可能是安裝時(shí)沒勾PATH我們本來就不建議勾也可能是勾了但沒重開終端還可能是裝了但shell沒初始化。解決路徑按順序試先確認(rèn)用Anaconda Prompt能不能用conda。能用說明安裝沒問題是普通終端沒配置。在Anaconda Prompt里跑conda init然后徹底關(guān)閉所有終端窗口重新打開。注意是徹底關(guān)閉不是新開一個(gè)標(biāo)簽頁。重開后還不行檢查是不是裝了多個(gè)終端比如Windows Terminal、Git Bash需要針對(duì)具體shell分別init。實(shí)在不行用Anaconda Prompt湊合它永遠(yuǎn)能用。我見過有人為了圖省事直接手動(dòng)把Anaconda路徑加進(jìn)系統(tǒng)PATH短期能用但埋下了環(huán)境串味的雷。不推薦。5.2 run conda init before conda activate這個(gè)報(bào)錯(cuò)通常出現(xiàn)在你手動(dòng)改了PATH、或者用了非標(biāo)準(zhǔn)終端之后。意思是conda命令本身能識(shí)別但shell的激活機(jī)制沒初始化所以不能切換環(huán)境。解決很簡單在能識(shí)別conda的終端里執(zhí)行conda init然后重開終端。如果執(zhí)行conda init本身也報(bào)錯(cuò)說明conda沒在PATH里回到5.1的流程。有個(gè)細(xì)節(jié)conda init會(huì)修改你的shell配置文件比如bash的.bashrc、PowerShell的profile如果之前手動(dòng)改過這些文件可能沖突??梢韵扔胏onda init --reverse撤銷之前的初始化再重新init。5.3 conda create -n 慢與Solving environment卡死conda create慢甚至卡在Solving environment不動(dòng)是conda的經(jīng)典痛點(diǎn)。根因是conda的依賴求解器要遍歷所有包的版本組合包越多、源越多計(jì)算量越大。幾個(gè)實(shí)測有效的緩解手段換國內(nèi)源這是最有效的前面講過。精簡源數(shù)量.condarc里只留一兩個(gè)源源越多求解越慢。指定具體版本conda create -n env python3.11 numpy1.26比不指定版本快很多因?yàn)榭s小了搜索空間。用mamba替代conda求解mamba是用C重寫的求解器速度能快幾倍到幾十倍。裝法conda install -n base -c conda-forge mamba之后把命令里的conda換成mamba即可用法完全兼容。實(shí)在不行用pip純Python包用pip裝通常更快。5.4 常見問題速查表報(bào)錯(cuò)/現(xiàn)象根因解決conda不是內(nèi)部或外部命令終端未初始化conda init后重開終端run conda init before activateshell未初始化同上Solving environment卡死依賴求解慢換源、精簡源、用mambaPackagesNotFoundError源里沒有該包換源或用pip裝裝完import不到包環(huán)境激活錯(cuò)/裝錯(cuò)環(huán)境conda list確認(rèn)檢查前綴環(huán)境占滿C盤默認(rèn)路徑在C盤遷移或重建到其他盤pip和conda版本沖突混用順序錯(cuò)先conda后pip必要時(shí)重建環(huán)境6. 與IDE對(duì)接PyCharm和VSCode配置要點(diǎn)6.1 PyCharm配置Anaconda解釋器PyCharm是Python開發(fā)的主流IDE配置conda環(huán)境的核心是指定解釋器路徑。新建項(xiàng)目時(shí)在Python Interpreter處選擇Add Interpreter→Conda Environment然后如果要用已有環(huán)境選Use existing environment在下拉里找到你建的環(huán)境比如myenv或者手動(dòng)指定路徑D:\anaconda3\envs\myenv\python.exe。如果要新建環(huán)境選New environment指定位置和Python版本PyCharm會(huì)調(diào)用conda幫你建。配置好后PyCharm底部的Terminal會(huì)自動(dòng)激活對(duì)應(yīng)環(huán)境裝包、跑腳本都在這個(gè)環(huán)境里不會(huì)串。這里有個(gè)經(jīng)驗(yàn)PyCharm的Terminal有時(shí)不會(huì)自動(dòng)激活conda環(huán)境如果發(fā)現(xiàn)裝包裝到了base手動(dòng)在Terminal里conda activate 環(huán)境名一下。6.2 VSCode配置conda環(huán)境VSCode配置稍麻煩一點(diǎn)因?yàn)樗旧聿皇荘ython專用IDE需要裝Python擴(kuò)展。裝完擴(kuò)展后按CtrlShiftP打開命令面板輸入Python: Select Interpreter在列表里選擇你的conda環(huán)境。VSCode會(huì)自動(dòng)識(shí)別Anaconda安裝的環(huán)境通常直接能看到(myenv: conda)這樣的選項(xiàng)。選完后VSCode的集成終端和調(diào)試器都會(huì)用這個(gè)環(huán)境。如果列表里沒有你的環(huán)境檢查是不是環(huán)境建在了非默認(rèn)路徑可以手動(dòng)輸入解釋器路徑添加。提示VSCode里跑Jupyter Notebook時(shí)也要在Notebook右上角單獨(dú)選一次kernel它和全局解釋器是分開設(shè)置的很多人在這里踩坑。6.3 深度學(xué)習(xí)環(huán)境配置示例以配PyTorch為例走一遍完整流程。先建環(huán)境conda create -n pytorch python3.11 conda activate pytorch然后裝PyTorch。注意PyTorch官網(wǎng)有專門的命令生成器根據(jù)你的CUDA版本選對(duì)應(yīng)命令。CPU版本conda install pytorch torchvision torchaudio cpuonly -c pytorchGPU版本以CUDA 11.8為例conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia裝完驗(yàn)證import torch print(torch.__version__) print(torch.cuda.is_available())cuda.is_available()返回True說明GPU可用。如果返回False檢查顯卡驅(qū)動(dòng)、CUDA版本是否匹配。這里有個(gè)常見坑conda裝PyTorch時(shí)如果沒指定cudatoolkit版本可能裝成CPU版一定要看清楚命令。7. 我踩過的坑與長期使用建議用了這么多年conda有幾個(gè)教訓(xùn)是文檔里不會(huì)寫、但實(shí)際會(huì)反復(fù)遇到的。第一base環(huán)境盡量保持干凈。很多人圖省事所有包都往base里裝結(jié)果base越來越臃腫某天某個(gè)包升級(jí)把另一個(gè)包搞崩了整個(gè)Anaconda都得重裝。我的習(xí)慣是base只放conda、mamba、jupyter這類工具具體項(xiàng)目的包一律建獨(dú)立環(huán)境。這樣即使某個(gè)環(huán)境玩壞了conda remove -n 環(huán)境名 --all刪掉重建幾分鐘的事。第二環(huán)境命名要有意義。env1、test、new這種名字過一個(gè)月你自己都不知道是干嘛的。用項(xiàng)目名_用途的格式比如nlp_bert、cv_yolo、data_analysis一眼就知道該不該刪。第三定期清理無用環(huán)境。conda環(huán)境很占空間conda env list看看有哪些不用的及時(shí)刪。還可以用conda clean --all清理下載緩存和未使用的包能釋放不少空間。第四導(dǎo)出environment.yml做備份。重要項(xiàng)目的環(huán)境導(dǎo)出yml存到項(xiàng)目倉庫里。換電腦、重裝系統(tǒng)、給同事復(fù)現(xiàn)一條命令還原。這個(gè)習(xí)慣能省下大量重配環(huán)境的時(shí)間。第五別迷信最新版。Python和庫的版本不是越新越好很多深度學(xué)習(xí)框架對(duì)Python版本有明確要求裝太新反而各種不兼容。建環(huán)境時(shí)按項(xiàng)目文檔推薦的版本來穩(wěn)。最后分享一個(gè)提速小技巧如果你經(jīng)常需要建相似的環(huán)境可以先建一個(gè)模板環(huán)境裝好常用包之后用conda create -n 新環(huán)境 --clone 模板環(huán)境克隆比從頭裝快得多。我自己的模板環(huán)境里放了numpy、pandas、matplotlib、jupyter、requests這些萬金油新項(xiàng)目克隆一份再按需增刪效率提升明顯。這套流程走下來從下載到能跑起第一個(gè)深度學(xué)習(xí)項(xiàng)目熟練的話半小時(shí)內(nèi)搞定。新手第一次可能要一兩個(gè)小時(shí)但把環(huán)境這關(guān)過了后面寫代碼才是真正有意思的部分。環(huán)境問題不值得反復(fù)消耗精力一次配好、長期受益這是我這些年最實(shí)在的體會(huì)。