2023-02-09-python環境控制(Linux)

前言1

pipenv, virtualenv 和 conda environment 是 Python 環境管理工具,可以幫助您在不同項目中隔離 Python 環境。這三個工具各有其優點和缺點,因此選擇哪個工具取決於您的需求和喜好。

virtualenv(python -m venv venv)

Virtualenv 是一個基礎的 Python 環境管理工具,可以幫助您隔離 Python 環境。Virtualenv 可以很容易地建立虛擬環境,並在該環境中安裝所需的包。Virtualenv 沒有自動生成和管理虛擬環境的功能,因此您需要手動更新和管理環境。Virtualenv 的優點在於它的簡單性,可以滿足您的大多數需求。

安裝

pip install virtualenv

建立環境

  1. 全新環境 python3 -m venv venv(自行命名環境名)
  2. 如果要複製其他專案的環境,在完成上一步之後,下以下指令 pip install -r requirements.txt

    進入環境

    source venv\bin\activate

    離開環境

    deactivate

    複製環境參數

    pip freeze > requirements.txt

pipenv(pipenv install )2

pipenv 是一個新的 Python 環境管理工具,它結合了 virtualenv 和 pip 的功能,並提供了一種更直觀的方法來管理 Python 環境和包。目前 python 的官方推薦使用 pipenv 來管理環境。 Pipenv 自動生成和管理虛擬環境,並在環境中安裝所需的包。Pipenv 具有自動生成 Pipfile 和 Pipfile.lock 文件的功能,這些文件可以記錄您的 Python 環境和所安裝的包的版本,以便您可以在任何時候重現環境。對我來說 pipenv 的立即好處是,我不需要自己管理用 python -m 產生的環境。

安裝

pip install pipenv

建立環境

在專案的目錄下

  1. pipenv --python 3.11
  2. pipenv install requests or pipenv install pytest --dev

    進入環境

    在專案的目錄下

  3. pipenv run python project.py or pipenv shell

    離開環境

  4. exit or Ctrl+D

    複製環境參數

    無須任何指令去建立環境參數。這也是他的令一個優點

conda(Conda create venv)

Conda environment 是 Anaconda 提供的 Python 環境管理工具。Conda 可以不僅管理 Python 環境,還可以管理其他語言的環境,例如 R 語言。Conda 具有快速建立和管理虛擬環境的功能,並可以輕鬆安裝需要的套件。Conda 用自己的套件庫,來安裝各種套件,並管理他们的版本。Conda 的主要優勢在于它的速度和穩定性,并且可以輕鬆地管理多種语言的環境。Conda 的穩定性表現在對 data science或人工智能演算方面的套件管理上。如果你的專案會使用到諸如 numpy, scripy, 或 plotly等數據科學家常用的套件,或是你的專案正在開發某個跟人工智能相關的項目,那conda會是你最好的選擇。

安裝

conda 官網

建立環境

  1. 全新環境 conda create --name environment_name python=3.11
  2. 複製其他專案的環境 conda env create -f environment.yml

    進入環境

    conda activate environment_name

    離開環境

    conda deactivate

    複製環境參數

    conda env export > environment.yml

結語

總之,Pipenv、virtualenv 和 conda environment 都是優秀的 Python 環境管理工具,您選擇哪個工具取決於您的需求和喜好。如果您需要一個簡單而靈活的環境管理工具,那麼 virtualenv 是一個不錯的選擇。如果您需要更直觀的環境管理方法,那麼 Pipenv 可能是您的最佳選擇。如果您需要快速穩定的環境管理工具,並且需要管理多種語言的環境,那麼 conda environment 是一個很好的選擇。另外,這些套件也會混合使用,您可以用 where python3 來確認您目前的專案正在使用哪個環境。我自己對於要用哪個環境管理工具的原則很簡單,如果要用到大量的科學計算與人工智慧,那我會選用 conda ,否則我就只用 pipenv。