--- title: 建立 Python 的虛擬環境 date: 2022-12-30 is_modified: false disqus: cynthiahackmd image: https://i.imgur.com/q7snBft.png categories: - "資訊科技 › 環境設定與指令" tags: - "Python" - "venv" --- {%hackmd @CynthiaChuang/Github-Page-Theme %} <br> 沒啥重點,純粹就是我熊熊忘了怎麼離開虛擬環境所生出來的一篇 XDDD <!--more--> <p class="illustration"> <img src="https://i.imgur.com/q7snBft.png" alt="Python 的虛擬環境"> Python 的虛擬環境(圖片來源: <a href="https://blog.debugeverything.com/virtual-environments-with-python-virtualenv/">DebugEverything</a>) </p> ## 安裝虛擬環境套件 一般來說,為了不弄亂系統本身的 Python 環境,在開發時會建立虛擬環境。這能幫助你避免相依性地獄,也能避免你因弄亂環境而被使用相同環境的同事圍毆 XDDD 之前最常使用 ==virtualenv== 這個命令來建立虛擬環境。使用前必須先透過 pip 安裝: ```bash= $ pip install virtualenv ``` <br class="big"> 另一套我最近常用的是 ==Python 的 venv==。它出現在 **Python3.6** 之後的版本中,理論上它是內建不需要特別安裝,但如果不幸遇到了,它會提醒你安裝 python3-venv: ```bash= $ sudo apt-get install python3-venv ``` ## 如何使用虛擬環境套件 雖然提了兩套,但這兩套的用法大同小異,除了建立時的指令略有不同外,後續的操作基本相同。那首先先來建立虛擬環境。 ### 建立虛擬環境 因為我的系統主要是使用 Python 3.9.4,那為了看清楚區別我建立一個 Python 3.6 的虛擬環境: ```bash= $ virtualenv -p python3.6 myenv_py36 created virtual environment CPython3.6.12.final.0-64 in 261ms creator CPython3Posix(dest=/home/diatango_lin/Cynthia_Chuang/pyenv/myenv_py36_1, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/diatango_lin/.local/share/virtualenv) added seed packages: pip==21.3.1, setuptools==59.6.0, wheel==0.37.1 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator ``` 其中,參數 `--python` 或是 `-p` 可用來指定虛擬環境的 Python 版號。 <br class='big'> 或是用 Python 的 venv 來建立虛擬環境,這個指令則是透過 Python 這個指令選擇特定或是任意 Python 的版本: ```bash= $ python3.6 -m venv myenv_py36 ``` 另外,還記得前面說過 Python 的 venv 是在 Python3.6 之後才出現的嗎?因此若想建立 Python3.6 之前的虛擬環境,這個方法是行不通的。 ### 使用虛擬環境 當成功建立一個虛擬環境後,你發現目前的下會產生一個虛擬環境資料夾。例如,當使用上述的指令建立虛擬環境後,可以發現名為 `myenv_py36` 的資料夾。而我們要啟動虛擬環境,就需要這些資料夾: ```bash= $ source myenv_py36/bin/activate ``` 如此就可以進入虛擬環境模式之中。此時會注意到命令列的前方會有相對應的標示: ```bash= (myenv_py36) $ ``` ### 停用虛擬環境 接下就是本篇重點(誤)!當要離開虛擬環境時輸入: ```bash= (myenv_py36) $ deactivate ``` 我老是習慣性直接輸入 `exit`,然後就不小心把 ssh 連線給切斷 :rolling_on_the_floor_laughing: ,雖說這也是從虛擬環境離開了沒錯啦 XDDD ## 參考資料 1. kirai (2018-10-04)。[DAY03-搞懂Python的virtualenv](https://ithelp.ithome.com.tw/articles/10199980)。檢自 iT 邦幫忙 (2022-12-26)。 2. [12. 虛擬環境與套件](https://docs.python.org/zh-tw/3/tutorial/venv.html)。檢自 Python 3.11.1 說明文件 (2022-12-26)。 3. Coding Lab (2021-06-06)。[Python 的 Virtualenv 虛擬環境安裝與使用](https://medium.com/ai-for-k12/python-的-virtualenv-虛擬環境安裝與使用-8645f5884aac)。檢自 AI for K-12|Medium (2022-12-26)。 4. Richard Ho (2021-04-28)。[建立Python的虛擬環境](https://104.es/2021/04/28/python-virtualenv-introduction/)。檢自 何敏煌老師的課程教材 (2022-12-26)。 ## 更新紀錄 :::spoiler 最後更新日期:2022-12-30 - 2022-12-30 發布 - 2022-12-26 完稿 - 2022-12-26 起稿 ::: {%hackmd @CynthiaChuang/Github-Page-Footer %}