跳至主要內容

標籤「Python」的 6 篇文章

查看所有標籤

使用 OpenAI API 開發支援多語言的翻譯 CLI 工具 translate-mcp

translate-mcp 是一個使用 OpenAI API 的翻譯工具。它支援 CLI 模式和 MCP 伺服器的兩種使用方式,能夠應對從想要翻譯整個文件到希望與 AI 工具整合的各種場合。

translate-mcp 是什麼

translate-mcp 是一款 專為翻譯而設的工具,使用 OpenAI API。它是用 Python 實現的,具有以下兩種使用方法。

  1. CLI 模式: 可以直接從命令行翻譯文件
  2. MCP 伺服器模式: 充當 Model Context Protocol (MCP) 伺服器,整合到 AI 工具中

特徵

  • 多語言支援: 支援多種語言
  • 簡單易用: 只需一個 API 金鑰便可開始
  • 兩種使用方式: 既可作為 CLI 腳本,也能作為 MCP 伺服器運行
  • 輕量級: 無需依賴外部庫,僅依賴 OpenAI API
  • 錯誤處理: CLI 模式以 stderr 輸出,MCP 模式以 JSON 格式回傳

安裝

前提條件

  • 已安裝 Python
  • 已獲取 OpenAI API 金鑰

安裝 uv

由於 translate-mcp 由 uv 管理,因此需要先安裝 uv

安裝 uv 的方法參見 Installation | uv

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

# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

安裝 translate-mcp

如果使用 uv,可以使用以下命令進行安裝。

uv tool install git+https://github.com/Himeyama/translate-mcp

如果使用 uvx,則無需安裝,直接執行即可。

uvx git+https://github.com/Himeyama/translate-mcp --help

使用方法

CLI 模式

翻譯文件時,可以使用以下命令執行。

translate --input blog/2026-04-02-example.md --from Japanese --to English

結果將輸出至標準輸出,並可透過重定向保存到文件中。

translate \
--input blog/2026-04-02-example.md \
--from Japanese \
--to English \
--output i18n/en/blog/2026-04-02-example.md

參數

  • --mcp: MCP 模式
  • --input: 待翻譯文件的路徑
  • --from: 原始語言(例如: Japanese、English)
  • --to: 目標語言(例如: English、Taiwanese)
  • --output (可選): 儲存翻譯後文本的位置
  • --model (可選): OpenAI 模型(例如: gpt-5-mini)
  • --debug (可選): 調試模式

錯誤處理

若發生錯誤,將輸出至 stderr。

MCP 伺服器模式

啟動為 MCP 伺服器,並可供 Claude Code 或其他 AI 工具使用。

translate --mcp

實例

以下說明如何將部落格文章從日文翻譯成英文和繁體中文(台灣)。

日文版本(原文)

# blog/2026-04-02-example.md 中有日文的文章

生成英文版本

translate \
--input blog/2026-04-02-example.md \
--from Japanese \
--to English > i18n/en/docusaurus-plugin-content-blog/2026-04-02-example.md

生成台灣版本(繁體中文)

translate \
--input blog/2026-04-02-example.md \
--from Japanese \
--to Taiwanese > i18n/zh-TW/docusaurus-plugin-content-blog/2026-04-02-example.md

優缺點

優點

  • 高精度: 使用 OpenAI 的高品質模型(如 GPT-4)
  • 技能支援: 可整合至 ChatGPT 和 Claude 的多種工具
  • 簡單: 設置和使用都非常簡單
  • 可定制: 由於源代碼公開,因此可進行自定義

缺點

  • 需支付 API 費用: 根據翻譯量,OpenAI API 需要收費
  • 必須連網: 需調用 API,因此無法離線使用
  • 速率限制: 受限於 OpenAI API 的速率限制

總結

translate-mcp 是一個 簡單且高品質的翻譯工具,利用 OpenAI API 開發。它在部落格文章的多語言支援、文件翻譯以及與 AI 工具整合等多種場合中均能發揮作用。

特別是在想要使用 Docusaurus 等靜態網站生成器支援多語言時,作為自動化腳本的用途效果顯著。

參考資料

Matplotlib (Pyplot) 常用程式碼範例

這裡介紹一些常用的程式碼和圖表範例。

目次

建立圖表

首先載入所需的函式庫。

import matplotlib.pyplot as plt
import numpy as np

單一圖表

fig, ax = plt.subplots()

2 x 3 的圖表

fig, axs = plt.subplots(2, 3)

繪製圖表

繪製拋物線

x = np.linspace(-1, 1, 201)
y = x ** 2

fig, ax = plt.subplots()
ax.plot(x, y)

用點繪製拋物線

fig, ax = plt.subplots()

x = np.linspace(-1, 1, 21)
y = x ** 2

ax.plot(x, y, 'o')

顏色設為橘色

fig, ax = plt.subplots()

x = np.linspace(-1, 1, 21)
y = x ** 2

ax.plot(x, y, color="tab:orange")

標準顏色如下:

顏色字串
tab:blue
tab:orange
tab:green
tab:red
tab:purple
tab:brown
粉紅tab:pink
tab:gray
橄欖tab:olive
tab:cyan

設定線的粗細為 4

fig, ax = plt.subplots()

x = np.linspace(-1, 1, 21)
y = x ** 2

ax.plot(x, y, lw=4)

設定標題

將標題設為 Title

fig, ax = plt.subplots()
ax.set_title("Title")

設定軸標籤

設定 x 軸標籤

將 x 軸標籤設為 Time (s)

fig, ax = plt.subplots()
ax.set_xlabel("Time (s)")

設定 y 軸標籤

將 y 軸標籤設為 Distance (m)

fig, ax = plt.subplots()
ax.set_ylabel("Distance (m)")

設定圖表的上限與下限

將上限設為 100

fig, ax = plt.subplots()
ax.set_ylim(top=100)

將下限設為 -100

fig, ax = plt.subplots()
ax.set_ylim(bottom=-100)

將上限設為 100,下限設為 -100

fig, ax = plt.subplots()
ax.set_ylim([-100, 100])

設定圖表的左邊與右邊

將左邊設為 -100

fig, ax = plt.subplots()
ax.set_xlim(left=-100)

將右邊設為 100

fig, ax = plt.subplots()
ax.set_xlim(right=100)

將左邊設為 -100,右邊設為 100

fig, ax = plt.subplots()
ax.set_xlim([-100, 100])

顯示網格

fig, ax = plt.subplots()
ax.grid()

僅顯示垂直網格

fig, ax = plt.subplots()
ax.grid(axis="x")

僅顯示水平網格

fig, ax = plt.subplots()
ax.grid(axis="y")

設定刻度

設定 x 軸刻度

fig, ax = plt.subplots()
xticks = range(6)
ax.set_xticks(xticks)

設定 x 軸刻度和刻度標籤

fig, ax = plt.subplots()
xticks = range(6)
ax.set_xticks(xticks, [f"{xtick}m" for xtick in xticks])

設定 y 軸刻度

fig, ax = plt.subplots()
yticks = [i * 20 for i in range(6)]
ax.set_yticks(yticks)

設定 y 軸刻度和刻度標籤

fig, ax = plt.subplots()
yticks = [i * 20 for i in range(6)]
ax.set_yticks(yticks, [f"{ytick}%" for ytick in yticks])

刪除刻度

刪除 x 軸刻度

fig, ax = plt.subplots()
ax.tick_params(bottom=False)

刪除 x 軸刻度標籤

fig, ax = plt.subplots()
ax.tick_params(labelbottom=False)

刪除 y 軸刻度

fig, ax = plt.subplots()
ax.tick_params(left=False)

刪除 y 軸刻度標籤

fig, ax = plt.subplots()
ax.tick_params(labelleft=False)

設定刻度顏色

將 x 軸刻度顏色設為紅色

fig, ax = plt.subplots()
ax.tick_params(axis="x", color="tab:red")

將 x 軸刻度標籤顏色設為紅色

fig, ax = plt.subplots()
ax.tick_params(axis="x", labelcolor="tab:red")

將 y 軸刻度顏色設為紅色

fig, ax = plt.subplots()
ax.tick_params(axis="y", color="tab:red")

將 y 軸刻度標籤顏色設為紅色

fig, ax = plt.subplots()
ax.tick_params(axis="y", labelcolor="tab:red")

調整圖表間距

將縱向間距設為 0.2,橫向間距設為 0.3

fig, ax = plt.subplots(3, 3)
fig.subplots_adjust(hspace=0.2, wspace=0.3)

自動設定間距

fig, ax = plt.subplots(3, 3)
fig.tight_layout()

儲存圖片

以 PNG 格式儲存

fig, ax = plt.subplots()
plt.savefig("graph.png")

以 SVG 格式儲存

fig, ax = plt.subplots()
plt.savefig("svg.png")

以 PDF 格式儲存

fig, ax = plt.subplots()
plt.savefig("svg.pdf")

graph.pdf

以 300 dpi 儲存

fig, ax = plt.subplots()
plt.savefig("graph300.png", dpi=300)

pyenv 安裝

這篇備忘錄記錄了 pyenv 的安裝。

資訊

pyenv 是一個命令行工具,用於管理多個 Python 版本。它允許你在同一台機器上輕鬆地安裝、切換和管理不同的 Python 環境,而不會相互衝突。

這對於需要使用不同 Python 版本進行開發的項目(例如,一個項目需要 Python 3.8,另一個需要 Python 3.10)非常有用。

1. 安裝 pyenv

安裝 pyenv 的方法因操作系統而異。

A. macOS (使用 Homebrew) - 推薦

在 macOS 上,使用 Homebrew 安裝 pyenv 是最簡單的方法。

brew update
brew install pyenv

B. Linux (使用 pyenv-installer 腳本) - 推薦

對於 Linux 系統,可以使用 pyenv-installer 腳本來自動化安裝 pyenv 及其常用的插件。

curl https://pyenv.run | bash

C. Windows (使用 pyenv-win)

對於 Windows 用戶,官方推薦使用 pyenv-win,它是 pyenv 的一個 Windows 版本。

# 通過 PowerShell 安裝
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" | Invoke-Expression

# 或者通過 pip 安裝 (需要先有 Python 環境)
pip install pyenv-win --target %USERPROFILE%\.pyenv

請參考 pyenv-win 的 GitHub 儲存庫獲取最新安裝說明:https://github.com/pyenv-win/pyenv-win

2. 配置 Shell 環境

安裝 pyenv 後,你需要將其添加到你的 Shell 環境中。這會讓 pyenv 命令在你的終端中可用。

A. Bash

將以下內容添加到你的 ~/.bashrc (或 ~/.bash_profile) 文件中:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)" # 確保 shell 能夠加載 pyenv
eval "$(pyenv virtualenv-init -)" # 如果你計劃使用虛擬環境

完成後,重新載入你的 shell 配置:

source ~/.bashrc

B. Zsh

將以下內容添加到你的 ~/.zshrc 文件中:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

完成後,重新載入你的 shell 配置:

source ~/.zshrc

C. 驗證安裝

打開一個新的終端會話,然後運行:

pyenv --version

如果成功,它會顯示 pyenv 的版本號。

3. 安裝 Python 版本

現在你可以使用 pyenv install 命令來安裝你需要的 Python 版本。

查看可用的 Python 版本

pyenv install --list

這會列出所有可安裝的 Python 版本,包括 CPython、Jython、Anaconda 等。

安裝特定版本

pyenv install 3.9.10 # 安裝 Python 3.9.10
pyenv install 3.10.6 # 安裝 Python 3.10.6

安裝可能需要一些時間,因為它會下載源碼並編譯 Python。

4. 使用 Python 版本

全局設置 Python 版本

設置全局 Python 版本:

pyenv global 3.10.6

這會將 3.10.6 設置為你所有 shell 會話的默認 Python 版本。

局部設置 Python 版本 (專案目錄)

在專案目錄中,你可以設置一個局部 Python 版本。

cd my_project
pyenv local 3.9.10

這會在當前目錄中創建一個 .python-version 文件。當你進入這個目錄時,pyenv 會自動切換到指定的 Python 版本。

查看當前使用的 Python 版本

pyenv versions

當前使用的版本會被標記一個星號 *

* 3.10.6 (set by /home/user/.pyenv/version)
3.9.10

5. 總結

pyenv 是一個非常實用且強大的工具,用於管理 Python 版本。它提供了一種簡潔而可靠的方式來應對多個 Python 環境的需求,避免了版本衝突,讓你的開發工作流更加順暢。正確安裝和配置 pyenv 是任何嚴肅 Python 開發者的基本技能。

Poetry 備忘錄

這篇備忘錄記錄了 Poetry。

資訊

Poetry 是一個用於 Python 項目依賴管理和打包的工具。它旨在提供一個更簡潔、更直觀的開發體驗,解決了傳統 Python 項目中 pipvirtualenv 的一些痛點。

Poetry 將依賴管理、虛擬環境、打包和發布功能集成到一個工具中,使得 Python 項目的生命週期管理更加順暢。

1. 安裝 Poetry

推薦使用官方提供的腳本進行安裝:

Linux / macOS / WSL

curl -sSL https://install.python-poetry.org | python3 -

Windows (PowerShell)

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

安裝完成後,你可能需要將 Poetry 的可執行路徑添加到你的 PATH 環境變量中。安裝腳本通常會給出提示。

2. 創建新專案

要創建一個新的 Poetry 專案:

poetry new my-project
cd my-project

這會創建一個包含以下結構的新目錄:

my-project/
├── my_project/
│ └── __init__.py
└── pyproject.toml
└── README.md

3. pyproject.toml 文件

Poetry 使用 pyproject.toml 文件來管理項目元數據和依賴。這是 Poetry 的核心配置文件。

範例 pyproject.toml

[tool.poetry]
name = "my-project"
version = "0.1.0"
description = ""
authors = ["Your Name <[email protected]>"]
readme = "README.md"
packages = [{include = "my_project"}] # 指定你的 Python 包

[tool.poetry.dependencies]
python = "^3.10" # 指定 Python 版本
requests = "^2.28.1" # 運行時依賴

[tool.poetry.group.dev.dependencies]
pytest = "^7.1.2" # 開發時依賴 (例如測試工具)

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

4. 管理依賴

添加依賴

poetry add requests # 添加運行時依賴
poetry add --group dev pytest # 添加開發時依賴

這會更新 pyproject.toml 並安裝依賴到虛擬環境中。

移除依賴

poetry remove requests
poetry remove --group dev pytest

安裝依賴

如果 pyproject.tomlpoetry.lock 已經存在,安裝所有依賴:

poetry install

更新依賴

更新所有依賴到最新兼容版本:

poetry update

更新指定依賴:

poetry update requests

5. 虛擬環境

Poetry 會自動為每個專案創建和管理虛擬環境。

運行命令

在虛擬環境中運行命令:

poetry run python my_script.py

進入虛擬環境 Shell

poetry shell

然後你就可以直接運行 python 或其他已安裝的命令。

查看虛擬環境信息

poetry env info

刪除虛擬環境

poetry env remove python3.10 # 替換為實際的 Python 版本或環境路徑

6. 打包和發布

打包專案

創建一個源發行版(sdist)和一個輪子文件(wheel):

poetry build

打包文件會生成在 dist/ 目錄中。

發布到 PyPI

在發布之前,請確保你的 pyproject.toml 中的元數據是準確的。

poetry publish

如果你是第一次發布,可能需要配置 PyPI 憑據。

poetry config pypi-token.pypi <your-pypi-token>

7. 總結

Poetry 是一個現代化的 Python 項目管理工具,它簡化了依賴管理、虛擬環境、打包和發布的整個流程。它的 pyproject.toml 文件提供了一個清晰且中心化的方式來定義項目元數據和依賴,大大提升了開發效率和項目可維護性。

安裝與設定 Pyenv

  1. 複製 Pyenv 複製 Pyenv 的儲存庫。 建議的目錄為 ~/.pyenv

git clone https://github.com/pyenv/pyenv ~/.pyenv


0. 編譯 Bash 擴充功能以提升速度
可以編譯 Bash 擴充功能來提升效能。
即使編譯失敗,仍可正常運作。

```sh
cd ~/.pyenv && src/configure && make -C src
  1. 設定(bash) 路徑及其他設定。

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile echo 'eval "$(pyenv init --path)"' >> ~/.profile export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" echo -e 'if shopt -q login_shell; then'
'\n export PYENV_ROOT="$HOME/.pyenv"'
'\n export PATH="$PYENV_ROOT/bin:$PATH"'
'\n eval "$(pyenv init --path)"'
'\nfi' >> /.bashrc echo -e 'if [ -z "$BASH_VERSION" ]; then'
'\n export PYENV_ROOT="$HOME/.pyenv"'
'\n export PATH="$PYENV_ROOT/bin:$PATH"'
'\n eval "$(pyenv init --path)"'
'\nfi' >>
/.profile


# 安裝 Python 環境

## 安裝相依套件
```sh
sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblemgma-dev -y

查看可安裝的環境

pyenv install -l

安裝

編譯需要一些時間,請耐心等候。

CONFIGURE_OPTS= "--enable-shared" pyenv install 3.9.5

確認版本

pyenv versions

切換版本

pyenv global 3.9.5