Python_環境健檢(輔助套件安裝)

建議檔名: 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