在安裝了Anaconda之後,建立的虛拟環境可能會預設儲存在 C:\ProgramData\Anaconda3\envs或C:\Users\使用者名\.conda\envs路徑下,但C槽的存儲空間很寶貴,由于每個虛拟環境的大小可能達到n個GB,稍不注意就會遇到C槽紅色警告。
解決思路
- 方案1:每次建立虛拟環境時手動指定存放路徑
-
方案2:修改Anaconda預設的虛拟環境存放路徑
很顯然,方案2更讨喜。
經分析(如下圖所示),可以知道在Anaconda 目錄下主要是envs和pkgs這兩個檔案夾占用了空間,這正是虛拟環境的目錄和包目錄,若可以把這兩個檔案夾放到其他盤,則問題可得以解決。
Anaconda目錄空間占用分析
修改配置前
在未進行任何配置之前,當我們建立新的虛拟環境時,虛拟環境的存放路徑在C槽,如下圖所示:
預設配置下虛拟環境的存放路徑
修改配置的步驟
1. 在C槽以外的磁盤建立2個檔案夾
以我在D盤為例:
在D盤建立的2個目錄
2. 編輯.condarc檔案
.condarc檔案預設存放在目前使用者目錄下,即C:\Users\使用者名\目錄下,若該目錄下不存在該檔案,可手動建立一個。在該檔案中添加以下配置資訊,分别将envs和pkgs檔案夾指向新建立的路徑和舊的路徑
envs_dirs: [D:\Anaconda3\envs, C:\ProgramData\Anaconda3\envs]
pkgs_dirs: [D:\Anaconda3\pkgs, C:\ProgramData\Anaconda3\pkgs]
配置檔案及内容
上圖中标号為1的是在步驟1中分别建立的2個檔案路徑,标号為2的是目前已有的虛拟環境存放的檔案路徑。一定要将新建立的檔案路徑放在[]清單的第一位。
原因是:系統在讀取路徑資訊時,預設選擇清單中的第一個路徑作為虛拟環境存放的路徑,若第一個路徑不存在,才會繼續尋找後面的路徑,将目前虛拟環境存放路徑也加進來是為了以防第一個路徑被誤删,建立新的虛拟環境時,依然可以存放在自己指定的目錄中,也是為了不妨礙目前已有的虛拟環境的使用,當然你也可以添加更多其他的備選路徑。
你也可以打開Anaconda Navigator點選左上角的 File -> Preference按照下圖示注的序号進行該步驟的配置,效果是一樣一樣的。
Anaconda Navigator配置
修改配置後
在修改了.condarc檔案後,當我們建立新的虛拟環境時,虛拟環境的存放路徑已經變為了D盤,如下圖所示:
修改配置後新的虛拟環境的預設存放路徑
一個有用的思考:是否可以将已有的虛拟環境移動到新的路徑中?
答案:可以,但有注意事項
- 測試步驟1:首先将.condarc中添加的配置資訊删掉,執行conda create -n test2在預設配置下建立一個名為test2的虛拟環境,該虛拟環境自然就存放在了預設的C槽。此時執行conda env list可以看到test2虛拟環境在C槽。
- 測試步驟2:将C:\ProgramData\Anaconda3\envs下的test2檔案夾剪切并粘貼到D:\Anaconda3\envs目錄下,再執行conda env list指令,可以看到test2虛拟環境已不存在。很容易了解的是:由于.condarc檔案未添加任何配置資訊,test2檔案夾已被轉移到其他路徑下,對于系統來說,相當于test2檔案夾已被删掉,是以該虛拟環境不會再顯示在清單中。
- 測試步驟3:将.condarc配置檔案恢複到以下圖1狀态後,重新執行conda env list指令,可以看到test2虛拟環境,且此時它的路徑資訊已顯示為D:\Anaconda3\envs\test。
Test2重新出現在虛拟環境清單中
結論:
anaconda不僅僅在建立新的虛拟環境時會讀取.condarc檔案的配置資訊。是以,倘若你想把現有的虛拟檔案轉移到别的磁盤目錄下來拯救苟活着的C槽,請確定該目錄在.condarc檔案中存在,否則anaconda将會找不到轉移後的虛拟環境。