iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0

本文目的:了解如何安裝 python 與相關模組,並且知道設定開發環境的優勢

本專欄會使用的模組與相關介紹

本專欄的目的是協助讀者使用 Python 做出符合自身需求的資料整理程式,例如工程師製作整理 wafer 檢測數據的工具、店家老闆製作庫存管理工具等。一個程式組成不外乎 UI 、核心、以及設定驗證,因此我實際編寫工具時主要會使用下列 Python 模組。

PySide6: 製作 UI 的模組

我初學時就直接學 PySide6,而不是原生的 tkinter。當時只想著 PySide6 有圖形化的 UI 設計工具,可以讓我用拖拉方式設定介面,不用再盯著 code 思考"所以UI到底長什麼樣子“等視覺化問題。

但是 PySide6 比起 tkinter 的以下幾點,可以讓我們的工具更好維護、更容易修改與擴充

  • Pyside6 的事件綁定 (Event Binding) 很靈活: PySide6 的 UI 部件與對應 function,連接方式就像電台與收音機,電台發射訊號後不會管收音機怎麼收,收音機也可以隨時收聽或關閉。
    因此 Pyside6 可以做到一對多連接、斷開連接後重新連接等功能。

    Pyside6 的事件綁定機制為信號與槽 (Signal & Slot),透過connect指令指示某物件的訊號是由哪個function接收,物件與function不知道彼此存在

  • PySide6 可以讓程式碼很乾淨: 由於 PySide6 的事件綁定機制是透過第三方connect,因此可以分開檔案建立 UI 的部件、function,然後再用一個檔案設定彼此綁定的方式。這樣的方式讓UI、function都是獨立的,因此也可以依照需求直接更換對應物件或function

    這種設計模式稱為 Model-View-Controller (MVC)

  • Pyside6 的物件功能多元: 好用的資料工具一定要讓使用者可以輸入自己的設定,但又要避免使用者打錯內容。PySide6 可以做出表格中有下拉式選單等專業功能。

Pandas: 資料處理的核心

使用 Python 做資料處理一定會想到雙熊 (Pandas & Polars),Pandas 是非常知名、歷史悠久的模組,Polars 則是以處理速度見長,本專欄會以 Pandas 作為資料處理核心。

以我們的背景 (非資工背景、自學的半導體工程師),Pandas 會是較穩健的選擇,原因如下:

  • Pandas 有非常多的網路資源,如教學或是 Stack Overflow上大量的討論

  • Pandas 的儲存格式,與繪圖模組 (Matplotlib 等) 的支援性高,可以很輕易的畫成圖

Pydantic: 使用者輸入資料的守門員

既然是資料處理工具,就一定會有讓使用者輸入所需設定的地方。而大家在使用工廠內一些程式時,一定遇過上下值相反、Wafer ID 輸入格式錯誤、弄錯 SPEC 單位等人為錯誤。這些問題若導致程式 crash 頂多關掉重開,但若沒發現產出異常而拿去報告或導致異常流出就要出大事。

也因此若能在源頭做好管理,可以避免 user (也是我們) 在實際使用上的麻煩。Pydantic 在資料驗證上是非常多功能的模組,它可以做到:

  • 內容驗證: 例如我們可以事先設定一個容許清單,當 user 輸入不在清單內的值時會發出通知

  • 格式驗證: 例如限制 wafer ID 輸入時第一個字母一定是大寫、最後2碼一定是00等

  • 相對性驗證: 例如最小值,一定是小於最大值

  • 條件驗證: 例如平時 user 只需輸入一個觀察項;但 user 在程式中若指定某些計算方式時,強制要求設定兩個觀察項

其他一定會用到的模組

  • dataclasses: 讓程式內資料傳遞與輸出更簡易的模組

  • pathlib: 管理檔案路徑的模組。將檔案路徑使用Path管理而不是string,可以有容易拆解與加入路徑、標示更清晰等效果

  • Matplotlib: 知名繪圖模組,與 Pandas 有相當優秀的支援

  • json: json 是一種很常用的資料儲存格式,此模組可以讀取/ 寫入 json,我通常拿來儲存使用者設定

  • Jupyter: 可以讓 Python 分段單獨執行之模組,對於驗證 prototype 、或是初學者想逐步確認輸出上非常好用


環境建置

如何安裝Python

如果是公司電腦,通常都有安裝軟體的限制,因此請開申請單讓 IT 來裝。

安裝 Python 通常有直接官網下載檔案,以及安裝 Anaconda 兩種方式。雖然 Anaconda 可以一次安裝 Python 與資料科學常用模組,且管理模組時有圖像化界面可用。但 Anaconda 很肥大且商用環境需要付費,因此建議就算是在家使用也是選擇官網下載檔案安裝。

安裝方式本文就不說明,大家可以參考相關網路教學。

IDE的選用

我選用的是 microsoft 的 Visual Studio Code (後續簡稱VS code),因為它可在公司行號免費使用、marketplace 安裝各種擴充、支援 Jupyter 等功能。

VS code 安裝完成後,還需要去 marketplace 安裝 Python 擴充才能正常使用。

另外推薦幾個我常用的擴充:

  • Jupyter: 安裝後就可以在 VS code 內使用 Jupyter,另外若要在 VS code 觀看資料還需要再安裝 Data Wranger

    建立 .ipynb 檔案的方式為在 VS code 內按下 CTRL + win + ALT + N,然後點選 Jupyter Notebook

  • Markdown Preview Mermaid Support: 可以用markdown-mermaid語法繪製流程圖等圖片

  • autopep8: 安裝此模組後,可以在儲存檔案時修正程式排版,讓程式碼符合 PEP 8 規範。另外此模組安裝後需要設定才會生效,設定方式請參考網路教學

  • Todo tree: 能在程式碼中標示 TODO、BUG,且在左側選單產生超連結之模組

建立虛擬環境 (Virtual Environment) 與安裝模組

以下皆以 windows 環境做說明

建立虛擬環境的步驟

  1. 開啟想要建立虛擬環境的資料夾,並在上面的網址列輸入cmd,就會看到 cmd 的黑畫面,且 cmd 的當前路徑直接就在需要建立環境的路徑

  2. 在cmd輸入以下指令: python -m venv .venv,便會開始建立虛擬環境,並在當前路徑建立一名為.venv的資料夾

  3. .venv資料夾就是這個專案的虛擬環境,另外強烈建議每個專案都要建立虛擬環境

安裝模組

  1. 將cmd的工作路徑移動到 ../.venv/Scripts.. 是專案的資料夾

  2. 輸入activate啟用虛擬環境,啟用後cmd指令列開頭會有(.venv)字樣,如下圖

    https://ithelp.ithome.com.tw/upload/images/20260915/20182319EVSj5kUZFZ.png

  3. 輸入pip install (模組名),即可安裝所需之模組

輸出已安裝模組清單,並在新環境重新安裝

  1. 輸出模組清單: 當虛擬環境啟用後,輸入以下指令,即會在當前資料夾看到 requirements.txt 檔案

    pip freeze > requirements.txt
    
  2. requirements.txt 點開後內容如下,裡面記錄著這個虛擬環境下的所有已安裝模組以及對應的版本

    https://ithelp.ithome.com.tw/upload/images/20260915/20182319dsEfcNVosB.png

  3. 在新環境中安裝模組: 建立新環境後,將 requirements.txt 放在 ../.venv/Scripts ,並在cmd中輸入以下指令,即可在新環境中安裝與先前環境相同的模組與版本

    pip install -r requirements.txt
    

為什麼要為每個專案獨立設定虛擬環境

其實當開啟cmd後,直接輸入 python -m pip install (某模組) 就可以在全域環境 (Global Environment)中安裝模組了,並且只要沒有套用虛擬環境的專案,都可以讀取到全域環境。

這樣子感覺很方便,還不用有activate的過程。但我強烈建議要為每個專案建立自己的環境,原因如下:

  • 最後的執行檔 (exe) 會很大: 我們最終的目的是將 code 打包成 exe 檔供自己或同事使用。打包工具在打包 exe 時,會將環境中所有模組都打包進去。若環境中充斥著這專案不用的模組,會導致最後 exe 檔異常的大,以及開啟速度很慢等問題。

  • 模組之間可能會有衝突: 例如若在同一環境中安裝 PySide6 與 PyQt5,這兩個都是 Python 中 Qt(圖形使用介面框架) 相關模組,在打包 exe 檔時會發生衝突。

  • 避免模組更新後,舊專案無法正常運作: 某些模組在更新後,會不支援舊的寫法。例如 Pandas 3.0 後不支援 Pandas 2.X 可用的”修改切片資料”寫法,這樣當Pandas 更新至 3.0 後,某些舊模組會發生異常。

To be continued →

了解如何用 pandas 清理很雜亂的 wafer 點測資料


上一篇
Day 1:先花55分鐘確認問題-這個專欄的緣起與目標
下一篇
Day 3:別再做資料手工藝 - 使用 Pandas 清理雜亂的 wafer 檢測資料
系列文
用 Python 打造最順手的良率統計工具:半導體工程師的模組化開發之道4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言