建議檔名: Python_環境健檢.py
一鍵檢查、安裝、記錄你的 Python 套件環境
(執行時注意確保網路連線暢通)
如果常常需要執行各種 Python 腳本
(特別是處理小說、EPUB、PDF 轉檔、自動化工作)
擔心缺套件、或遇到 ModuleNotFoundError 錯誤
Python_環境健檢.py 可以批次檢查與安裝(更新)
Python 必要的輔助工具套件
本段程式碼可以:
列出常用套件清單
(如beautifulsoup4, soupsieve, pypandoc, lxml,
requests, openpyxl, python-docx, python-pptx 等)
檢查目前環境是否已安裝
一鍵安裝缺少的套件(透過 pip 自動安裝)
分頁顯示檢查結果(類似 DIR /P,便於閱讀長清單)
輸出完整的檢查報告到 套件檢查結果.txt,方便留作記錄或分享
附帶 各套件的用途與官方網站連結,幫助快速了解每個套件的功能與來源
🚀 使用方式
將 Python_環境健檢.py 放到任何資料夾
在命令提示字元 (CMD) 或 PowerShell 執行:
Python_環境健檢.py
依照提示輸入指令:
按 Enter 直接進行檢查
選擇是否要安裝缺少的套件
可選擇輸出檢查報告到 TXT 檔案
📄 執行範例
🔍 正在檢查 Python 套件安裝狀態...
✔ 已安裝:beautifulsoup4 (4.12.3) — HTML/XML 解析
✘ 未安裝:pypandoc — Markdown、DOCX、PDF 轉換工具
✔ 已安裝:requests (2.32.3) — 網路請求
是否要安裝缺少的套件?(Y/N):Y
⏳ 正在安裝 pypandoc ...
✅ 安裝完成!
結果已輸出至:套件檢查結果.txt,例:
🔧 Python 環境健檢結果
==================================================
✔ 已安裝:beautifulsoup4 — HTML/XML 解析,擷取網頁內容 — https://www.crummy.com/software/BeautifulSoup/bs4/
✔ 已安裝:soupsieve — CSS 選擇器支援,搭配 BeautifulSoup 使用 — https://github.com/facelessuser/soupsieve
✔ 已安裝:pypandoc — 文件轉換工具,可轉換 Markdown、DOCX、PDF — https://github.com/bebraw/pypandoc
✔ 已安裝:requests — 簡易網路請求,處理 HTTP/HTTPS 下載 — https://docs.python-requests.org/
✔ 已安裝:lxml — 高效能 XML/HTML 解析工具 — https://lxml.de/
✔ 已安裝:openpyxl — Excel xlsx 讀寫工具 — https://openpyxl.readthedocs.io/
✔ 已安裝:python-docx — Word 文件生成與讀取 — https://github.com/python-openxml/python-docx
✔ 已安裝:python-pptx — PowerPoint 簡報生成與讀取 — https://github.com/scanny/python-pptx
👤 適用對象
經常下載小說、轉檔、批次處理文件的讀者與工作者
需要穩定 Python 環境來執行各種自動化腳本的使用者
想快速建立乾淨且功能完整的 Python 工作環境的新手
🔗 官方資源參考
beautifulsoup4
HTML/XML 解析,方便擷取網頁內容
https://www.crummy.com/software/BeautifulSoup/
soupsieve
提供 CSS 選擇器支援給 BeautifulSoup
https://github.com/facelessuser/soupsieve
pypandoc
文件轉換工具,可轉換 Markdown、DOCX、PDF
https://github.com/bebraw/pypandoc
requests
網路請求工具
https://docs.python-requests.org/
lxml
高效能 XML/HTML 解析
https://lxml.de/
openpyxl
讀寫 Excel xlsx 檔案
https://openpyxl.readthedocs.io/
python-docx
產生或讀取 Word 文件
https://python-docx.readthedocs.io/
python-pptx
產生或讀取 PowerPoint 簡報
https://python-pptx.readthedocs.io/
程式碼:
(複製以下文字,貼入純文字檔中,存檔後將副檔名設定為 .py)
【可直接在檔案總管雙擊執行】
import importlib
import subprocess
import sys
import os
datetime import datetime
def check_and_install(packages):
results = []
for pip_name, (import_name, desc, url) in packages.items():
try:
importlib.import_module(import_name)
results.append((pip_name, True, desc, url))
except ImportError:
results.append((pip_name, False, desc, url))
return results
def install_package(package):
try:
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
try:
# 重新檢查能不能匯入
importlib.import_module(packages[package][0])
print(f"✅ {package} 安裝完成!")
except ImportError:
print(f"⚠️ {package} 仍無法載入,請手動檢查。")
except subprocess.CalledProcessError:
print(f"❌ {package} 安裝失敗!")
if __name__ == "__main__":
packages = {
"beautifulsoup4": ("bs4", "HTML/XML 解析,擷取網頁內容", "https://www.crummy.com/software/BeautifulSoup/bs4/"),
"soupsieve": ("soupsieve", "CSS 選擇器支援,搭配 BeautifulSoup 使用", "https://github.com/facelessuser/soupsieve"),
"pypandoc": ("pypandoc", "文件轉換工具,可轉換 Markdown、DOCX、PDF", "https://github.com/bebraw/pypandoc"),
"requests": ("requests", "簡易網路請求,處理 HTTP/HTTPS 下載", "https://docs.python-requests.org/"),
"lxml": ("lxml", "高效能 XML/HTML 解析工具", "https://lxml.de/"),
"openpyxl": ("openpyxl", "Excel xlsx 讀寫工具", "https://openpyxl.readthedocs.io/"),
"python-docx": ("docx", "Word 文件生成與讀取", "https://github.com/python-openxml/python-docx"),
"python-pptx": ("pptx", "PowerPoint 簡報生成與讀取", "https://github.com/scanny/python-pptx"),
}
print("🔧 Python 環境健檢與套件安裝工具")
print("="*50)
results = check_and_install(packages)
missing = [pkg for pkg, installed, _, _ in results if not installed]
now = datetime.now().strftime("%Y%m%d_%H%M%S")
output_file = f"套件檢查結果_{now}.txt"
with open(output_file, "w", encoding="utf-8") as f:
f.write("🔧 Python 環境健檢結果\n")
f.write("="*50 + "\n")
for pip_name, installed, desc, url in results:
status = "✔ 已安裝" if installed else "✘ 未安裝"
line = f"{status}:{pip_name} — {desc} — {url}"
print(line)
f.write(line + "\n")
print(f"\n📄 檢查結果已輸出至:{output_file}")
if missing:
yn = input(f"\n是否要安裝缺少的 {len(missing)} 個套件?(Y/N):").strip().lower()
if yn == "y":
for pkg in missing:
print(f"⏳ 正在安裝 {pkg} ...")
install_package(pkg)
else:
print("⏭ 跳過安裝缺少套件。")
# Version: 2025/09/12