Python Virtual Environment

Python Virtual Environment

  • 各個專案可以控制自己的套件
    • 不同版本的環境,不互相影響
    • 有獨立的環境
  • 套件版本升級不會影響到其他專案
  • 在沒有權限的情況下安裝新套件
    • 像是在 server 上安裝環境,沒有 root 權限

Python Virtenv

Installation

  • pip3 install virtualenv

Common Commands

1
2
3
4
5
6
7
8
// 建立虛擬環境
virtualenv -p {PATH_TO_PYTHON} {ENV_NAME}

// 啟動虛擬環境
source plusoneEnv/bin/activate

// 退出虛擬環境
deactivate

Reference

Pipenv

  • 只需要 pipenv,不需要再分別使用 pip 跟virtualenv 。
  • 自動產生與更新Pipfile and Pipfile.lock 解決了維護 requirements.txt 的問題。
  • 透過套件的 Hash 安全性檢查確認 (當安裝套件 hash 值不同時,跳出錯誤,防止惡意套件侵入)
    • 但是這個也是最常出錯的部分,並且會增加安裝時間
  • 可以透過.env 自動載入不同環境變數。
  • [Pipenv 更簡單、更快速的 Python 套件管理工具]

Installation

  • pip3 install pipenv

Common Commands

  • basic
    1
    2
    // 檢視版本
    pipenv --version
  • env
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // 產生 Python 3 虛擬環境
    pipenv --three
    // 產生 Python 2 虛擬環境
    pipenv --two
    pipenv --python={VERSION}

    // 進入虛擬環境中
    pipenv shell
    // 刪除此虛擬環境
    pipenv --rm
  • package
    1
    2
    3
    pipenv install {PACKAGENAME}
    pipenv install {PACKAGENAME} --dev // development 環境
    pipenv uninstall request
  • others
    1
    2
    // 根據 virtualenv 執行相關 python 指令 (不進入虛擬環境中)
    pipenv run python test.py

Reference

Anaconda

  • 可以建立不僅 python 套件的環境
    • 其他像是 cuda 等等
    • 但是環境需要的空間會很大

Installation

  • Installation - Anaconda Docs

    Common Commands

  • basic
    1
    2
    3
    conda --version
    // 清理環境中 unused packages and zip/tar files
    conda clean --all
  • env
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // 建立新的工作環境且指定 Python 版本
    conda create --name {ENVIRONMENT} python={MAIN.MINOR.PATCH}

    // clone a one env
    conda create --name new_name --clone old_name

    // create the env by yml
    conda env create -f {FILE}

    // update the env by yml
    conda env update --file env.yml

    // 檢視電腦中的虛擬環境
    conda env list

    // 啟動虛擬環境
    conda activate {ENVIRONMENT}

    // 回到 base 工作環境
    conda deactivate

    // 將虛擬環境的設定匯出為 .yml 檔
    conda env export --name {ENVIRONMENT} --file {ENVIRONMENT}.yml

    // 移除虛擬環境
    conda env remove --name {ENVIRONMENT}
  • package
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // 更新指定套件
    conda update {PACKAGE_NAME}

    // 檢視虛擬環境安裝的套件清單
    conda list --{ENVIRONMENT}

    // 在目前的虛擬環境安裝指定套件
    conda install {PACAKGE_NAME}={MAJOR.MINOR.PATCH}

    // 在目前的虛擬環境移除指定套件
    conda remove {PACKAGE_NAME}

    Reference

  • Anaconda Offical Website
  • Anaconda Documents
  • 輕鬆學習 Python:conda 的核心功能