快速上手 Anaconda 與 Jupyter 的虛擬環境與核心設定
這一篇主要是用來統整在安裝過程會遇到的問題,每一次重新處理安裝 Anaconda 都會花一堆時間。希望這篇文章能夠幫到未來的自己,也能幫到有需要的人。
備註:本文的指令都是以 Mac 的環境為主,若是 Win 或是 Linux 可以查詢關鍵字。
安裝 Anaconda
Anaconda 和 Miniconda 的差異:
有分成 Anaconda 和 Miniconda 兩個版本,就把他想成一個是全家桶餐,想要的不想要的都幫你配好了;後者則是自助餐,比較麻煩但卻能只裝自己想吃的東西。
那 Anaconda 跟 conda 是什麼關係?
大概就是私生子…沒有,其實 Anaconda 是一個 Python 資料科學 (Data Science) 平台,包含常用的 Pandas、Matplotlib、SciPy 等套件,其套件管理器就是 conda。
conda 是一個套件管理包,只要安裝 Anaconda 就會幫你自動安裝 conda 管理套件。conda 之所以受歡迎,是因為他能直接建立一個真正意義上隔離環境,而無須向 virtualenv 一樣需要跟 root 版本的 Python 等套件相依,因此能讓環境更乾淨一些。
注意這裡,Conda 是各種的套件管理包,不單只有 Python。誤解的來源可能是因為使用 Anaconda 的 Python 套件時,通常也會用 conda 來管理,因此大家就直覺認為 conda 只能管理 Python 套件。
如 pip 就只能管理 Python 的套件,但優點是他們擁有更大的 Python 資料庫。
Conda 與 Pip 到底差在哪?
讓大家參考兩篇經典的文章:
如何在 conda 的環境中,恰當地使用 pip:
- 先安裝 brew 套件管理系統(For MacOS)。
- 安裝 Anaconda 套件組。
- 找 conda 管理套件裡的 pip,如果沒有就
conda install pip
。 - 再使用
pip install new_module
或pip install --upgrade <package>
,絕對不要用sudo pip install
會導致系統檔案被污染。
Conda 相關指令:
- Conda 安裝套件:
conda
參數,-c
是指 channel,如果於本找不到,可以到 conda-forge
裡來搜尋,但 conda-forge 也有一些缺點,有些套件會和 Anaconda 本身的套件產生相容性問題,因此可以選擇使用。
conda install -c conda-forge XXX_module
- 安裝特定套件:
使用一段時間後,就會遇到一個問題–––難道我每一次都要進行一模一樣的安裝流程?難道不能直接生成一個清單,以後只要照著清單安裝就好?答案當然可以!
pip 指令:
# 生成清單
$ pip freeze > requirements.txt# 安裝清單上的套件
$ pip install -r requirements.txt
Conda 指令:
# Conda 的安裝清單
$ conda install --yes --file requirements.txt# Conda 輸出成 yml 清單
$ conda env export > freeze.yml# Conda 輸出成 txt 清單
conda list -e > requirements.txt# 直接創建環境
$ conda env create -f freeze.yml# 如果遇到某些包不能用,則可使用下列指令
$ while read requirement; do conda install --yes $requirement; done < requirements.txt# 如果想要在包不能用的情況下,用 pip 替代安裝,則可以
$ while read requirement; do conda install --yes $requirement; done < requirements.txt
- Conda 升級:
# 可在任何環境下更新 base 的套件版本
$ conda update -n base -c defaults conda
- Conda 更新套件:
$ conda update anaconda
- Conda 刪除沒在用的包和快取:
$ conda clean -a
Conda 環境管理:
- 檢視目前可存取的虛擬環境:
$ conda env list
- 檢視 Jupyter Notebook / Lab 的核心(Kernel):
前提是要先安裝 ipykernel
套件,才能自行制訂 Jupyter 的套件。
$ jupyter kernelspec list
- 新增 Conda 的虛擬環境:
python=X
,其中 X 可以為特定版本或大版本,例如 3 或 3.7.1 等。
# 簡單版本
$ conda create -n myenv python=3# 為特定環境安裝套件
$ conda create -n <environment> <package>
$ conda create -n envname python=3.4 scipy=0.15.0 astroib bumpy# 從特定環境套件設定虛擬環境
$ conda env create -f environment.yml
- 在虛擬環境下默認不安裝特定包:
如果想安裝默認包,需要進 .condarc 修改默認安裝。
conda create --no-default-packages -n my_env_name python
- 不透過複製方式創建新環境:
# 查看模組訊息
$ conda list --explicit# 導出模組清單
$ conda list --explicit > requirement.txt# 創建相同的環境
conda create --name newenv --file requirement.txt# 向已經存在的環境安裝特定模組
conda install --name newenv --file requirement.txt
- 察看當下虛擬環境下的套件表:
$ conda list
- 搜尋套件是否在 conda 上:
$ conda search <package>
- 安裝通道管理:
# 新增通道,優先級最高
conda config --add channels new_channel# 新增通道,優先級最高(和上方效果一致)
conda config --prepend channels new_channel# 新增通道,優先級最低
conda config --append channels new_channel# 顯示通道狀態
conda config --set show_channel_urls yes# 要使 conda 使用舊方式,並在列出的通道中安裝最新的套件
conda config --set channel_priority false
- 執行與關閉 Conda 的虛擬環境:
# Activate the conda virtual env
$ conda activate myenv# Deactivate the conda virtual env
$ conda deactivate
- 移除 Conda 虛擬環境:
在移除前,必須先轉換至其他的環境,才能
$ conda remove --name myenv --all$ conda remove -n myenv --all # 兩個相同
- 設定 Conda 虛擬環境的核心:
A. 設定前需安裝 ipykernel,才能控制 Jupyter 的版本核心。當然也可以直接安裝 Jupyter Lab 或是 Jupyter Notebook,理論上都會自動幫你安裝。
$ conda install ipykernel
B. 把特定的虛擬環境加入設定的核心,並推至 Jupyter 的編輯器裡。
$ python -m ipykernel install --user --name myenv --display-name "Myenv"
C. 移除運算核心。
$ jupyter kernelspec remove myenv
最後的最後,如果這篇文章有幫到你,再麻煩你拍個手,你的拍手勢我最大的寫作動力!
【希望用你的掌聲來投票與支持】
拍 5~10 下:簽個到,表示支持(感謝你的鼓勵啊啊啊)
拍 10~20 下:想要我未來多寫「數據技術相關」內容
拍 20~30 下:想要我未來多寫「數據分析實例」內容
拍 30~50 下:我有你這讀者,寫這篇也心滿意足了!
謝謝你/妳,願意把我的文章閱讀完
如果你喜歡筆者在 Medium 的文章,可以拍個手(Claps),
也歡迎你分享給你覺得有需要的朋友們。
|參考資料|