2025年5月12日 星期一

>Python UV 管理器:從安裝到使用

 

Python UV 管理器:從安裝到使用

UV 是一款強大的 Python 包管理工具,能夠替代 pip、pip-tools、pipx、poetry、pyenv、twine、virtualenv 等工具,提供高效的 Python 版本管理、依賴管理及虛擬環境管理,這裡簡單描述以利日後查找。

 


1. UV 的特點

  • 一體化工具鏈:安裝 UV 即可取代多個獨立工具,減少版本衝突與配置負擔。

  • 極致性能:基於 Rust 開發,安裝與解析速度遠超傳統 pip。

  • 一致性與可重複性:透過 uv.lock 文件,確保不同環境的依賴一致性。

  • 輕量虛擬環境管理:內建 venv 功能,無需依賴外部工具。

  • 完善的 Python 版本管理:類似 pyenv,但更適合項目隔離,不影響系統環境。

2. UV 的安裝

UV 提供多種安裝方式,適用於不同平台:

方式 1:使用官方安裝腳本

適用於 Linux 和 macOS:

curl -LsSf https://astral.sh/uv/install.sh | sh

適用於 Windows:


powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

方式 2:使用 pip 安裝

如果已安裝 Python,則可使用 pip 安裝:

pip install uv

方式 3:其他安裝方式

UV 也支持 Homebrew、WinGet、Scoop、Docker 或 GitHub Releases 安裝。例如:

brew install uv

3. UV 的基本使用

安裝完成後,可以使用 UV 來管理 Python 項目:

初始化新項目

uv init myproject
cd myproject

UV 會自動建立 .gitignore.python-versionpyproject.toml 等文件,並初始化 Git 倉庫。

添加package

uv add numpy

這將自動:

  1. 創建虛擬環境並安裝 numpy

  2. numpy 添加至 pyproject.toml

  3. 生成 uv.lock 文件,確保依賴一致性

運行 Python 腳本

uv run python script.py

或指定 Python 版本:

uv run --python 3.11 script.py

同步依賴

uv sync

這將確保所有依賴與 uv.lock 文件保持一致。

4. 參考文獻

2025年4月16日 星期三

用 pythonnet 重塑群益 SKOrderLib,提升功能完整性

以前都使用 comtypes 來包裹群益 SKCOM API。然而,幾次API更新後,在處理 SKOrderLib 時,發現愈來愈多使用 comtypes 包裝後功能不完善,一些事件無法正常運作。因此,我嘗試使用 pythonnet 來包裝 SKCOM API (請參考這篇),結果 SKOrderLib 的功能得以順利運作。 以下是我比較 comtypes 和 pythonnet,最佳化 SKOrderLib 的實際經驗 ,用jupyter notebook來運行可以得到最好效果。     


comtypes 範例

很多功能呼叫後都沒有回應,向是 GetRealBalaceReport, GetMarginPurchaseAmountLimit 等,重複呼叫 GetRealBalaceReport,甚至只會顯示 SK_ERROR_QUERY_IN_PROCESSING, 不論是間隔多久,都不會再回傳正確資料。

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

pythonnet範例

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.