虛擬環境設置

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 23 的多個版本

  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 在移除套件本身,並不會自動移除其相依的其他套件。
這些問題,促使了像 pipenvpoetry 這樣的工具發展,他們能更好處理套件相依性。
pipenv 因為有一些問題存在所以停滯發展了一個階段。 至於 poetry 目前已經是相當穩定且成熟的一個方案,建議使用它來操作。

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

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

  1. 安裝 Poetry

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

    • 系統是 LinuxmacOSWindows(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.11.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 版更新

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

0.2 版本, LangChain 對其代碼結構進行重大調整,特別是拆除 langchainlangchain-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 的基本開發環境。
  • 支援PythonIDE軟體有很多,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 的地方),直接按下滑鼠右鍵,也會彈出選單,裡面同樣可以直接點選「複製、貼上、剪下」等功能。

相關主題與延伸閱讀