天天看點

【拯救C槽】一文搞懂Windows修改Anaconda預設虛拟環境路徑及原理

作者:SageCat
在安裝了Anaconda之後,建立的虛拟環境可能會預設儲存在 C:\ProgramData\Anaconda3\envs或C:\Users\使用者名\.conda\envs路徑下,但C槽的存儲空間很寶貴,由于每個虛拟環境的大小可能達到n個GB,稍不注意就會遇到C槽紅色警告。

解決思路

  • 方案1:每次建立虛拟環境時手動指定存放路徑
  • 方案2:修改Anaconda預設的虛拟環境存放路徑

    很顯然,方案2更讨喜。

經分析(如下圖所示),可以知道在Anaconda 目錄下主要是envs和pkgs這兩個檔案夾占用了空間,這正是虛拟環境的目錄和包目錄,若可以把這兩個檔案夾放到其他盤,則問題可得以解決。

【拯救C槽】一文搞懂Windows修改Anaconda預設虛拟環境路徑及原理

Anaconda目錄空間占用分析

修改配置前

在未進行任何配置之前,當我們建立新的虛拟環境時,虛拟環境的存放路徑在C槽,如下圖所示:

【拯救C槽】一文搞懂Windows修改Anaconda預設虛拟環境路徑及原理

預設配置下虛拟環境的存放路徑

修改配置的步驟

1. 在C槽以外的磁盤建立2個檔案夾

以我在D盤為例:

【拯救C槽】一文搞懂Windows修改Anaconda預設虛拟環境路徑及原理

在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]
           
【拯救C槽】一文搞懂Windows修改Anaconda預設虛拟環境路徑及原理

配置檔案及内容

上圖中标号為1的是在步驟1中分别建立的2個檔案路徑,标号為2的是目前已有的虛拟環境存放的檔案路徑。一定要将新建立的檔案路徑放在[]清單的第一位。

原因是:系統在讀取路徑資訊時,預設選擇清單中的第一個路徑作為虛拟環境存放的路徑,若第一個路徑不存在,才會繼續尋找後面的路徑,将目前虛拟環境存放路徑也加進來是為了以防第一個路徑被誤删,建立新的虛拟環境時,依然可以存放在自己指定的目錄中,也是為了不妨礙目前已有的虛拟環境的使用,當然你也可以添加更多其他的備選路徑。

你也可以打開Anaconda Navigator點選左上角的 File -> Preference按照下圖示注的序号進行該步驟的配置,效果是一樣一樣的。

【拯救C槽】一文搞懂Windows修改Anaconda預設虛拟環境路徑及原理

Anaconda Navigator配置

修改配置後

在修改了.condarc檔案後,當我們建立新的虛拟環境時,虛拟環境的存放路徑已經變為了D盤,如下圖所示:

【拯救C槽】一文搞懂Windows修改Anaconda預設虛拟環境路徑及原理

修改配置後新的虛拟環境的預設存放路徑

一個有用的思考:是否可以将已有的虛拟環境移動到新的路徑中?

答案:可以,但有注意事項
  1. 測試步驟1:首先将.condarc中添加的配置資訊删掉,執行conda create -n test2在預設配置下建立一個名為test2的虛拟環境,該虛拟環境自然就存放在了預設的C槽。此時執行conda env list可以看到test2虛拟環境在C槽。
  2. 測試步驟2:将C:\ProgramData\Anaconda3\envs下的test2檔案夾剪切并粘貼到D:\Anaconda3\envs目錄下,再執行conda env list指令,可以看到test2虛拟環境已不存在。很容易了解的是:由于.condarc檔案未添加任何配置資訊,test2檔案夾已被轉移到其他路徑下,對于系統來說,相當于test2檔案夾已被删掉,是以該虛拟環境不會再顯示在清單中。
  3. 測試步驟3:将.condarc配置檔案恢複到以下圖1狀态後,重新執行conda env list指令,可以看到test2虛拟環境,且此時它的路徑資訊已顯示為D:\Anaconda3\envs\test。
【拯救C槽】一文搞懂Windows修改Anaconda預設虛拟環境路徑及原理

Test2重新出現在虛拟環境清單中

結論:

anaconda不僅僅在建立新的虛拟環境時會讀取.condarc檔案的配置資訊。是以,倘若你想把現有的虛拟檔案轉移到别的磁盤目錄下來拯救苟活着的C槽,請確定該目錄在.condarc檔案中存在,否則anaconda将會找不到轉移後的虛拟環境。

如果你覺得此文對你有幫助,請記得 點贊 收藏 + 關注 哦

繼續閱讀