實體與虛擬環境 Python

本節將介紹實體環境和虛擬環境使用 Python 的特點,以及當應用軟件不支援虛擬環境 Python 的解決方法。

實體環境 Python

實體環境指的是在操作系統中直接安裝 Python 並在全域範圍內運行的情況,而虛擬環境是在不同的封閉環境中運行 Python 的情況。

實體環境特點:

  1. 簡單直接:在實體環境中安裝 Python 和套件是一個簡單的過程,尤其是在某些發行版和操作系統中,Python 可能已經預先安裝好了。

  2. 無需配置:在實體環境中,所有的 Python 項目都可以共享全域安裝的 Python 解釋器和套件,減少了配置的需要。

  3. 系統級特權:在實體環境中,你可以直接訪問系統級資源,比如訪問操作系統庫、硬件設備等。

虛擬環境Python

將所有套件安裝在Python的主安裝目錄中是可行的,但這樣做會有版本衝突、管理與清理困難等缺點。因此我們通常會選擇使用虛擬環境,虛擬環境在 Python 開發中有著許多優點,主要包括以下幾點:

  1. 隔離環境:虛擬環境能在同一台計算機上創建多個獨立的 Python 環境,每個環境都有自己的 Python 解釋器和安裝的套件。避免不同項目之間的相互干擾,確保各個項目之間的依賴關係不衝突。

  2. 套件管理:在虛擬環境中,用戶更為方便地安裝、更新和移除需要的套件,而不會影響到其他環境的套件配置。這使得使用者可以在不同項目中使用不同版本的套件,而不會造成衝突。

  3. 版本控制:虛擬環境幫助用戶確保項目在不同的 Python 版本之間保持兼容。如果用戶需要在不同版本的 Python 上運行項目,可以在不同的虛擬環境中安裝相應版本的 Python 解釋器。

  4. 測試環境:虛擬環境使得在不同環境中進行測試變得更加容易。用戶可以在不同的虛擬環境中運行項目,以確保其在各種場景下的正常運作。

  5. 簡化部署:當用戶準備部署電腦的應用程序時,虛擬環境可以幫助用戶確保部署時所使用的依賴與本地開發環境一致,從而避免因為環境差異而引起的問題。

總的來說,虛擬環境提供了更好的套件管理和環境隔離,使得Python項目的開發、測試和部署都更加方便、可靠。常用的虛擬環境工具有virtualenv和 Python 3.3版本後內建的venv,更建議的方式是使用 Ansys Python Manager 來安裝。

以Python內建的venv套件也可以完成虛擬環境安裝。以下是使用 venv 創建虛擬環境的基本步驟:

1. 打開終端或命令提示符。

2. 選擇一個項目目錄,並導航到該目錄。

3. 執行命令創建虛擬環境,例如: python3 -m venv myenv (其中 myenv 是虛擬環境的名稱)。

4. 啟動虛擬環境: 在Windows上,執行 myenv\Scripts\activate 。 在Unix或macOS上,執行 source myenv/bin/activate 。

5. 現在,任何使用 pip 安裝的套件都將僅安裝在這個虛擬環境中。

虛擬環境目錄

當使用 venv (或 virtualenv )創建一個虛擬環境時,會在指定目錄下生成一系列的目錄和檔案。這些組件共同構成了一個隔離的Python運行環境,使其能夠獨立於系統全局環境運行。以下是虛擬環境中常見的目錄和檔案:

  1. bin(在Windows中為Scripts)目錄 :包含虛擬環境的執行檔,例如 python (或 python.exe 在Windows上)和 pip 。此外,這個目錄還包含一 個 activate 腳本,用於啟動虛擬環境。

  2. include 目錄 :存放Python標頭檔(header files),這些檔案主要用於編譯安裝某些依賴C語言擴展的Python套件。

  3. lib 目錄 :這是安裝Python套件的地方。每個虛擬環境都會有自己的 lib 目 錄,在這個目錄下,您會找到一個Python版本命名的子目錄(例如 python3.8 ),其中包含虛擬環境安裝的所有Python包。

  4. pyvenv.cfg 檔案 :這是一個配置檔案,記錄了虛擬環境的一些基本設定,如使用的Python解釋器位置等。

這些構件一起工作,使虛擬環境能夠運行獨立於系統Python安裝的應用。啟動虛擬環境(使用 activate 腳本)後,系統的 PATH 會臨時修改,以優先使用虛擬環境中的Python解釋器和相關工具。這樣,當您在虛擬環境中運行Python或安裝新的套件時,所有操作都將限定在這個隔離的環境內,不會影響到系統中的其他Python環境。

透過虛擬環境,您可以為每個Python項目創建一個乾淨、隔離的工作環境,有效地管理項目依賴並避免潛在的衝突問題。

在虛擬環境當中安裝套件

啟動虛擬環境後,實際上是修改了命令行界面中的一系列環境變數,主要是為了將當前的Python解釋器切換到虛擬環境中。這包括調整PATH環境變數,讓命令行中的python和pip指令都指向虛擬環境的版本,而不是全域的安裝版本。

一旦虛擬環境啟動,您就可以使用pip安裝、升級或卸載該環境中的Python套件。此處的pip僅對當前虛擬環境有效,所有透過pip安裝的套件都會安裝在該虛擬環境的lib目錄下,不會影響系統Python或其他虛擬環境。

這種設計允許開發者在不同專案間進行隔離管理,每個專案都有獨立的依賴和環境設定,互不干擾。

操作流程如下:

  1. 開啟命令行界面。

  2. 導航至專案目錄。

  3. 啟動虛擬環境:對於Windows,使用指令myenv\Scripts\activate;對於Unix或macOS,使用指令source myenv/bin/activate。

  4. 使用pip安裝所需套件:pip install package_name。

這樣就能在虛擬環境中自由管理Python套件,而不會影響其他Python環境。

當應用軟件不支援虛擬環境Python的解決方法

雖然虛擬環境對開發者友善,但有些應用軟體不一定支援虛擬環境的 Python。這種情況可能出現在某些特定的應用程式或軟件中,特別是那些對 Python 環境有嚴格要求的軟件。例如在 Ansys 生態系中:我們在虛擬環境的 Spyder 開發完 *.py 檔案,但放到 Ansys optiSLang (註六)中運行,雖然軟體可以找到虛擬環境 Python (如圖2-11),但軟體會出現找不到對應模組錯誤。

Ansys optiSLang 在2023R2版本,還尚未支援虛擬環境的Python。

此時,筆者建議的解決方法如下:

  • 使用原生 Python 環境:如果應用軟件不支援虛擬環境,那麼可以考慮在全域範圍內使用原生的實體環境 Python。這樣做可能會導致一些環境衝突和依賴問題,但也是一個簡單而直接的解決方法。確保你的系統中安裝了所需版本的 Python 和相關套件,並在全域範圍內運行你的應用程式。

  • 找出軟體中使用的Pytho軟體中使用的Python安裝位置 (ex: C:\Program Files\Dynardo\Ansys optiSLang\2023 R1)。在命令提示字元(cmd)的視窗中輸入

  • 另一種方法是下載 Python 原始安裝檔,重新灌一次 Python,再將灌好在虛擬環境的模組,複製拷貝至實體環境的模組中。請記得加入環境變數 path,完成後重新開機,這是目前筆者使用的方法。如圖2-12。如此就能在應用軟體中正常運行。

Google Colab

除了在本機上面使用Python,我們亦可以利用雲端資源來運行Python,例如使用Google Colab。

Google Colab ( Colaboratory ) 是一個在雲端運行的編輯環境,由 Google 提供一個雲端虛擬主機,支援 Python 程式及機器學習 TensorFlow 演算法,Colab 目的在提供教育訓練以及教學研究,不用下載或安裝,就可直接編輯 Python,並使用 Python 的資源庫,大幅降低初學者的入門門檻,不用耗費太多時間在環境的安裝與設定。

如果想要使用外部模組,在 Colab 中新增模組有兩種方法:

  • 使用 pip 指令

    pip 是 Python 的套件管理工具,可用於安裝和管理 Python 模組。

    要使用 pip 指令在 Colab 中新增模組,請按照以下步驟操作:

    1. 在 Colab 的程式碼編輯區域中,輸入以下指令:

    !pip install 模組名稱

    例如,要新增 pptx 模組,請輸入以下指令:

    !pip install pptx
    1. 按下 Enter 鍵。

    2. Colab 會將模組安裝到其虛擬環境中。

  • 使用 importlib.util.find_spec() 函數

    importlib.util.find_spec() 函數可用於檢查模組是否已安裝。

    要使用 importlib.util.find_spec() 函數在 Colab 中新增模組,請按照以下步驟操作:

    1. 在 Colab 的程式碼編輯區域中,輸入以下程式碼:

    import importlib.util
    
    spec = importlib.util.find_spec("模組名稱")
    
    if spec is None:
      # 模組未安裝
      !pip install 模組名稱
    else:
      # 模組已安裝
      pass

    例如,要新增 pptx 模組,請輸入以下程式碼:

    import importlib.util
    
    spec = importlib.util.find_spec("pptx")
    
    if spec is None:
      # 模組未安裝
      !pip install pptx
    else:
      # 模組已安裝
      pass
    1. 按下 Enter 鍵。

    2. Colab 會檢查模組是否已安裝。如果模組未安裝,Colab 會將其安裝到其虛擬環境中。

    以下範例示範如何使用 pip 指令在 Colab 中新增 pptx 模組:

    !pip install pptx
    
    import pptx
    
    # 建立新的簡報
    prs = pptx.Presentation()
    
    # 新增投影片
    slide = prs.slides.add_slide()
    
    # 新增標題
    title = slide.shapes.add_title("Hello, world!")
    
    # 儲存簡報
    prs.save("hello_world.pptx")

    執行此程式碼後,Colab 會將 pptx 模組安裝到其虛擬環境中,並建立一個名為 hello_world.pptx 的簡報。

  • 在 Colab 中新增模組時,請使用 pip 指令的 --user 選項,以將模組安裝到您的使用者主目錄中。這樣可以避免模組與其他使用者衝突。

!pip install --user 模組名稱
  • 如果您在安裝模組時遇到問題,請嘗試重新啟動 Colab。

Colab 新增的模組會存放在 Google 雲端硬碟的 /content/.local/lib/python3.7/site-packages 目錄中。這個目錄是 Colab 的虛擬環境的一部分。

因此,請注意,即使在 Colab 中新增了模組,也無法在本機電腦上使用這些模組。下次重開 Colab 時,Colab 會重新啟動其虛擬環境。但是,虛擬環境中的模組會保留。

因此,下次重開 Colab 時,上次新增的模組仍然會在。以下是一些在 Colab 中新增模組的注意事項:

  • 在 Colab 中新增模組時,請使用 pip 指令的 --user 選項,以將模組安裝到您的使用者主目錄中。這樣可以避免模組與其他使用者衝突。

!pip install --user 模組名稱
  • 如果在安裝模組時遇到問題,請嘗試重新啟動 Colab。

  • 如果需要在 Colab 中使用非 Python 模組,請將模組上傳到您的 Google 雲端硬碟,然後鍵入 importlib.util.find_spec() 指令,在 Colab 中載入模組。

import importlib.util

spec = importlib.util.find_spec("/path/to/module")

if spec is None:
  # 模組未安裝
  !pip install /path/to/module
else:
  # 模組已安裝
  import /path/to/module

Google Colab 預裝模組

Colab 預裝了許多常用的 Python 模組,包括:

  • TensorFlow

  • JAX

  • PyTorch

  • scikit-learn

  • pandas

  • NumPy

  • Matplotlib

  • seaborn

  • Keras

  • spaCy

此外,Colab 還預裝了一些 Google 的內部模組,例如:

  • Google Cloud Platform

  • TensorFlow Hub

  • TensorFlow Datasets

  • Google Colab Utilities

可以使用以下指令查看 Colab 預裝的所有模組:

!pip list

以下是 Colab 預裝的一些常用模組的簡介:

  • TensorFlow:一個用於機器學習和人工智慧的開源軟體庫。

  • JAX:一個用於高性能數值計算的 Python 庫。

  • PyTorch:一個用於機器學習和人工智慧的開源 Python 框架。

  • scikit-learn:一個用於機器學習的 Python 庫。

  • pandas:一個用於資料分析的 Python 庫。

  • NumPy:一個用於數值計算的 Python 庫。

  • Matplotlib:一個用於繪製圖表的 Python 庫。

  • seaborn:一個用於繪製圖表的 Python 庫。

  • Keras:一個用於深度學習的 Python 庫。

  • spaCy:一個用於自然語言處理的 Python 庫。

您可以使用這些模組來進行各種機器學習、人工智慧和資料分析任務。如果需要使用 Colab 未預裝的模組,您可以使用 pip 指令安裝該模組。

!pip install 模組名稱

例如,要安裝 opencv-python 模組,請輸入以下指令:

!pip install opencv-python

Last updated