虛擬環境設置

1. venv

  1. Python 3.3 以上版本已內建,不需另外安裝
  2. 方法:
    • 格式
      指定 Python -m venv 虛擬目錄與名稱
      例子:

      c:\python\python36\python.exe -m venv C:\.venvs\tf-model-env
      c:\.venvs\tf-model-env\Scripts\activate

2. virtualenv

  1. 第三方套件,需另外安裝,支援 Python 2 與 3 的多個版本

  2. 安裝 python 3
    到官網 Download Python | Python.org 下載 python3,截止目前,官方版本是 3.12.4 ,

    安裝目錄最好自訂到 c:\python\python312, 原因是我們可能會安裝很多版本的 python。
    windows 下安裝完成後,很多教學上都說使用指令: python3,但其實指令是 python

    查詢版本 python -V

  3. 安裝 pip
    通常 pip 是預設隨著 python3 安裝的,但我們自己安裝的時候可能會出現沒有 pip 的情況,這時需要手動安裝 pip

    python -m pip install -U pip

    這個指令是有則升級,無則安裝。

  4. 安裝 virtualenv
    virualenv 的意義是,即便不存在其他版本的開發環境,我們也可以用來區分我們同時進行的多項應用開發。
    pip install virtualenv

  5. 創建某個應用程式的虛擬環境
    virtualenv -p c:/python/python312/python.exe c:/.virtualenv/py312
    上面這個指令,就是使用 python 3.12 版本的 exe , 建立了 py312 的虛擬運作環境,由於未指定目標目錄,這個 py312 會建立在 c:/.virtualenv/ 上。

  6. 啟動虛擬環境
    7. 通常我們在 powershell 中,看到的命令列是 c:/ 開頭的, 如果是 cmd 則是 c:\
    8. 進入目錄 c:\.virtualenv\py312\Scripts
    9. 執行 active 指令,如果顯示該指令不存在 使用 ./activate


3. Poetry

之前 python 開發者通常使用 virtualenv或是 venv 等方式來建立虛擬環境並使用 pip 來安裝套件,但是這樣的一個方法最大的問題就是相依的問題。 pip 在解決套件版本衝突時常碰到比較多的麻煩。因為它缺乏依賴解析算法,導致環境不穩定與出現一些不可預測的錯誤,此外 pip 在移除套件本身,並不會自動移除其相依的其他套件。
這些問題,促使了像 pipenv 和 poetry 這樣的工具發展,他們能更好處理套件相依性。
pipenv 因為有一些問題存在所以停滯發展了一個階段。 至於 poetry 目前已經是相當穩定且成熟的一個方案,建議使用它來操作。

Poetry 不單單只是套件管理工具而已。 Poetry 也內建了虛擬環境的管理功能 當在專案中使用 Poetry 進行初始化和安裝套件時,Poetry 會自動在專案目錄中建立一個虛擬環境。

3.1 使用 Poetry 來安裝與管理虛擬環境

  1. 安裝 Poetry

    安裝 Poetry 時,Python 版本必須在 3.8 以上。

    • 系統是 Linux、macOS、Windows(WSL) 中
    curl -sSL https://install.python-poetry.org | python3 -
    • Windows 若是使用 Powshell

      (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
       
      Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing -OutFile install-poetry.py
       
      python install-poetry.py
       
      # 或
      python -m pip install --upgrade pip
      pip install poetry
  2. 檢查是否安裝成功

    poetry --version
  3. 檢查 Poetry 中的設定檔

    poetry config --list
  4. 設定虛擬環境在專案中,透過指令開啟允許專案的虛擬環境設置功能。

    poetry config virtualenvs.in-project true
  5. 用 Poerty 建新專案
    使用下面指令,用 Poetry 來建一個新專案,這裡用 ch1 來命名

    poetry new ch1

    poetry

  6. 開始安裝虛擬環境 env

    cd ch1
    poetry env use C:\Python\Python313\python.exe
    poetry install

    安裝完成會多了一個資料夾 .venv
    .venv

  7. 檢查python 版本

    cd ch1
    poetry run python --version
    Python 3.13.1

    若出現 3.13 以上的版本,就代表順利安裝成功

  8. 安裝套件
    使用 Poetry 安裝套件指令是 poetry add package_name

    # 安裝 langchain ^0.3.14 需要 `3.13.1` 以上版本至  < `4`
    poetry add langchain
    poetry add numpy
    poetry add black

    Poetry 自動幫我解析好套件與安裝好其依賴的套件。

    安裝完成,打開 toml 檔,會發現到多了一行程式碼:

    dependencies = [
        "numpy (>=2.2.1,<3.0.0)",
        "black (>=0.1.0,<0.2.0)",
        "langchain (>=0.3.14,<0.4.0)"
    ]

    poetry.lock 文件是由 Poetry 自動生成的一個檔案,它會精確記錄了專案的依賴套件及其精確版本號。當在專案中使用 poetry 添加一個套件時,poetry 會在 pyproject.toml 文件中記錄這個套件,還會在 poetry.lock 文件中鎖定該套件的當前版本和其所相依的套件版本。

  9. 啟動虛擬環境

    .venv\Scripts\activate

    (ch1-py3.13)

3.2 詳解 pyproject.toml

pyproject.toml 文件跟 package.json 是好相似的概念,是專案設定和依賴管理的核心,提供了一個中心化的地方來儲存專案的 metadata 和相依性,使得開發流程更加順暢一致。

  • 運行時依賴相依

    [tool.poetry.dependencies]
    python = "^3.11"
    langchain = "0.3.14"
    numpy = ">=1.26.2,<3"
  • 開發 dev 模式依賴相依

    [tool.poetry.group.dev.dependencies]
     pytest = "^5.2"
     black = "^24.10.0"

    只要安裝過 poetry add package_name, 異動過 pyproject.toml, 再次更新需使用指令 poetry update package

在 pyproject.toml 中,可以指定專案的依賴及其版本,指定版本的方法有以下幾種常用方法:

  1. 精確版本

    [tool.poetry.dependencies]
    numpy = "1.21.0"

    指定一個明確的版本,代表只有該特定版本會接受。

  2. 指定範圍

    [tool.poetry.dependencies]
    numpy = ">=1.21.0, <2.0.0"

    任何版本從 1.21.0 (含) 到 2.0.0 (不含) 都是可以接受的。

  3. * (所有)

    [tool.poetry.dependencies]
    numpy = "1.21.*"

    任何兼容的版本, 使用 1.21 系列,例如: 1.21.1、1.21.2。

  4. caret 指定版本字首數字

    [tool.poetry.dependencies]
    numpy = "^1.21.0"

    允許版本為 1 開頭的數字,但需低於 2.0.0 的版本

  5. ~ 特定範圍

    [tool.poetry.dependencies]
    numpy = "~1.21.0"

    允許 1.21.0 以及任何更高的版本,但是低於 1.22.0 的版本

  6. 多版本指定 [ , , ,...]

    [tool.poetry.dependencies]
    numpy =[ ">=1.20.0, <1.21.0", ">=1.26.2,<3"]

3.3 使用 Python-dotenv 來管理環境變數

在開發軟體時,管理環境變數是一個重要的步驟。環境變數常用來儲存敏感資訊,如資料庫連接字串、API 金鑰等,將這些資訊與程式碼分離,能夠提高安全性並使專案易於維護。 Python-dotenv 是一個常用的工具,可以幫助你輕鬆管理環境變數。

Python-dotenv 可以從 .env 文件中讀取環境變數並將它們載入到運行中的應用程式。這樣就可以將敏感資訊存放到 .env 文件中,而不是直接寫在程式碼裡。

  1. 安裝 Python-dotenv

    cd ch1
    poetry add python-dotenv
  2. 建立 .env 文件

    • 在專案裡面的資料夾 ch1 有一個檔案 __init__.py,同層級目錄裡建立一支 Python 檔: 01_dotenv.py

      from dotenv import load_dotenv
      import os
       
      # 載入 .env 文件
      load_dotenv()
       
      # 讀取環境變數
      aoai_key = os.getenv("AOAI_API_KEY")
       
      print(f"AOAI key: {aoai_key}")
    • 在專案裡,與 pyproject.toml 同層位置,建立一個 .env 檔,然後編輯該檔案內容,如下:

      AOAI_API_KEY=5566
  3. 指定路徑的 .env 檔
    可以指定要哪個路徑下的 .env 檔,甚至多個 .env 檔。

    修改程式碼如下即可:

    load_dotenv(dotenv_path='path/to/first/.env')
    load_dotenv(dotenv_path='path/to/second/.env')
  4. 使用 dotenv_values
    除了上面的方法,還可以用 dotenv_values 來把環境變數載入,這樣子載入的方式是把環境變數變成 JSON 的方式,所以取值就不用 os.getenv。

    from dotenv import dotenv_values
     
    config = dotenv_values(".env")
     
    print(config.get("AOAI_API_KEY"))

3.4 LangChain 0.2 版介紹與 0.3 版更新

2024 年 1 月 8 日之前,LangChain 是一個被人詬病的框架。
在 2024 1 月 8 日, LangChain 官方正式推出了 0.1 版本。
在 2024 5 月 , LangChain 官方正式推出了 0.2 版本。

0.2 版本, LangChain 對其代碼結構進行重大調整,特別是拆除 langchain 與 langchain-community 之間的依賴關係,這意味著 langchain 不再需要依賴 langchain-community,舊的匯入語句在 0.4.x 版本之前依然可用,但用戶應該開始逐步過渡至新的匯入路徑。未來這些語句將會在 0.4.x 版本中被移除。

不同版本差異性可能很大,為了爾後容易升級,關於 Pydantic 的部份,盡量使用基本定義欄位的部份就好,避免太多 Pydantic 的自定義驗證邏輯等特性,因為在這裡版本不同差異很大。

這裡要注意 LangChain 0.3 版本停止支援 Python 3.8

poetry 命令|
—|----
poetry config --list|列出 Poetry 中的設定
poetry --version| 列出 Poetry 安裝的版本
poetry new projectName| 產生 Poetry 專案
poetry install | 相依套件安裝
poetry add package_name| 安裝套件
poetry remove package_name| 移除套件
poetry env remove <環境名稱> |移除虛擬環境
poetry env use <環境名稱>|使用虛擬環境
poetry show| 列出已安裝的套件
poetry update| 依賴套件的升級
poetry shell| 啟動虛擬環境

3.5 詞語

  1. LLM(Large Language Model)
  2. LCEL(Langchain Expression Language) Langchain 表達式語言

4. Miniconda

  1. 下載: https://repo.anaconda.com/miniconda
  2. 建立虛擬環境
    conda create -n keras-bk python=3.10 -y
  3. 當成功建立虛擬環境後,我們需要輸入 conda init 命令來初始化環境,在完成後記得需要重新啟動 Windows 終端機, 如下所示:
  4. conda env list 命令顯示已建立的虛擬環境清單
  5. 啟動與使用 Python 虛擬環境
    conda activate keras-bk
  6. 檢視虛擬環境已經安裝的套件清單
  7. conda list
  8. 關閉與移除 Python 虛擬環境
  9. 移除 Python 虛擬環境的命令是 conda env remove --name 虛擬機名稱。
    例: (base) $ conda env remove --name keras-bk

5. 配置 Anaconda 開發環境

1. 安裝 Anaconda 套件

  • Anaconda套件包含常用的套件,只要安裝 Anaconda 套件就會建立 Python 的基本開發環境。
  • 支援Python的 IDE軟體有很多,Anaconda 內建以Spyder 作為開發Python 的程式編輯器。
  • Anaconda 3 目前有三種版本分別為個人版、團隊版及企業版,這裡以個人版為主。
  1. 官網下載 Anaconda3

  2. 使用系統管理員身分執行安裝

  3. 點擊後,直接打開

  4. 按Next鈕開始安裝

  5. 點擊I Agree鈕同意版權

  6. 設定使用者為 Just Me, 按Next 鈕繼續安裝

    選使用者會安裝在使用者目錄下,若選 All Users 會安裝在 C:\ProgramData 目錄下

  7. 按 Browse 鈕可以改變預設的安裝路徑,按 Next 鈕繼續安裝

  8. 勾選設定 PATH 變數與勾選 Register Anaconda3 as my default Python 3.13

  9. 進行安裝(會花費一段時間)

  10. 按Next鈕繼續

  11. 按Next鈕繼續

  12. 按Finish鈕完成安裝。

    預設安裝後會開啟 Anaconda 的相關網頁。

  13. 測試
    鍵盤打出 Win+r 後, 輸入 cmd 點擊確定

  14. 在命令框中輸入 conda --version
    出現 conda 25.11.1(你的版本號)

    即表示安裝成功

2. Spyder 整合開發環境介紹

  1. Anaconda套件安裝完成後可點按工具列的開始鈕,再點按 「Anaconda(anaconda3)」資料夾,在其中點按「Spyder」項目,就可以開啟Spyder整合開發環境。
  2. Spyder整合開發環境如下:

3. Spyder 整合開發環境設定

  1. 設定編輯視窗字型和樣式:
    執行功能表 【Tools/Preferences】 項目,會開啟 「Apperence」項目,在 「Syntax highlighting theme」框架中將預設的「Spyder Dark」改為 「Spyder」,接著在 「Font」框架中將字型大小加大。 設定後的結果可以在 「Preview」框架中預視,若滿意就按 ok確定,設定後系統需要重新開啟。
  2. 設定預設的工作資料夾
    先點選 「Working directory」項目,再點選 「the following directory」選項,並輸入預設的工作資料夾名稱和路徑,這裡為 c:\workspace\python。該資料夾要預先建立,也可以按右邊的select directory圖示鈕選擇或新增資料夾。設定後按 Apply 鈕套用,然後按 ok 鈕完成設定。
  3. Edit工具列
    新版Spyder中,已經沒有獨立的「Edit(編輯)工具列」可以勾選了。
    官方在近期的版本更新中,簡化了工具列的配置,把原本工具列上的「剪下、複製、貼上、復原、重做」等按鈕移除了,因此在 Toolbars 選單裡才找不到它。
    新版的執行功能表 【window/panel】項目,可以選擇要顯示和隱藏的工具列,在此設定要顯示 Editor 工具列。
    • 最上方的「Edit」選單(滑鼠操作)
      最頂部的選單列依然保有完整的 Edit 選單。當你需要進行編輯操作時,直接點擊左上角的 Edit,就能看到所有功能:
      • Undo(復原)
      • Redo(重做)
      • Cut / Copy / Paste(剪下/複製/貼上)
    • 萬用的鍵盤快捷鍵(最推薦、最快速)
      在寫程式時,雙手不離開鍵盤是最順手的。你可以直接使用這些標準快捷鍵:
      • 復原 (Undo): Ctrl + Z
      • 重做 (Redo): Ctrl + Y (或者 Ctrl + Shift + Z)
      • 剪下 (Cut): Ctrl + X
      • 複製 (Copy): Ctrl + C
      • 貼上 (Paste): Ctrl + V
    • 滑鼠右鍵選單
      在左側的代碼編輯區(也就是你寫 temp.py 的地方),直接按下滑鼠右鍵,也會彈出選單,裡面同樣可以直接點選「複製、貼上、剪下」等功能。

相關主題與延伸閱讀