1. requirement.txt
2. 簡介清單
- attrs 是一個用於創建和操作 Python 類的庫,它可以簡化類的定義和驗證,提高代碼的可讀性和性能1。
- certifi 是一個提供 Mozilla 的根證書集合的庫,用於驗證 SSL 證書的信任性和身份2。
- chardet 是一個字符編碼檢測庫,可以自動識別 ASCII, UTF-8, UTF-16, UTF-32, Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN, EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, EUC-KR, ISO-2022-KR, Johab, KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 等編碼3。
- cos-python-sdk-v5 是騰訊雲 COS(對象存儲)的 Python SDK,可以方便地在 Python 程序中調用 COS 的 API 接口4。
- dicttoxml 是一個將 Python 字典或其他原生數據類型轉換爲有效 XML 字符串的庫,支持多種數據類型和嵌套結構5。
- gevent 是一個基於協程的 Python 網絡庫,使用 greenlet 提供了一個高層同步 API 來封裝 libev 或 libuv 事件循環,支持異步 I/O、SSL、DNS 查詢、子進程等功能6。
- greenlet 是一個輕量級的協程庫,可以在同一進程中實現多個執行單元之間的切換7。
- idna 是一個實現 IDNA(國際化域名應用)協議的庫,用於處理包含非 ASCII 字符的域名機制,支持 IDNA 2008 和 Unicode IDNA 兼容性處理8。
- Jinja2 是一個現代化且設計友好的模板引擎,參考了 Django 的模板語法,支持模板繼承、宏、自動 HTML 轉義、沙箱執行等功能9。
- MarkupSafe 是一個實現文本對象的庫,可以對字符進行轉義,使其在 HTML 和 XML 中安全使用,防止 XSS 攻擊10。
- pdfkit 是一個將 HTML 轉換爲 PDF 的庫,基於 wkhtmltopdf 工具11。
- protobuf 是 Google 的數據交換格式,可以在不同語言和平臺之間高效地序列化和反序列化結構化數據12。
- PyMySQL 是一個純 Python 實現的 MySQL 客戶端庫,支持 Python DB API 2.0 規範13。
- PyPDF2 是一個用於操作 PDF 文件的庫,支持分割、合併、裁剪、加密等功能14。
- PyYAML 是一個用於解析和生成 YAML(一種人類可讀的數據序列化格式)文檔的庫15。
- requests 是一個簡潔且優雅的 HTTP 庫,支持發送各種請求、處理響應、設置超時、添加頭部、上傳文件、處理 Cookies、使用代理等功能16。
- setproctitle 是一個允許開發者修改進程標題(在 ps 命令中顯示)的庫17。
- six 是一個提供 Python 2 和 Python 3 兼容性的庫,封裝了一些不同版本之間的差異性18。
- SQLAlchemy 是一個著名的 ORM(對象關係映射)框架,支持多種數據庫後端,提供了高層的對象模型和低層的 SQL 表達式語言19。
- urllib3 是一個強大且易用的 HTTP 庫,支持連接池、重試、超時、壓縮、重定向等功能20。
- retrying 是一個用於實現重試邏輯的裝飾器庫,支持設置重試次數、重試間隔、重試條件等參數21。
- pycryptodomex 是一個自包含的加密庫,提供了對稱加密算法、非對稱加密算法、哈希函數、消息認證碼等功能22。
- pika 是一個純 Python 實現的 AMQP(高級消息隊列協議)客戶端庫,支持 RabbitMQ 等消息中間件23。
- boto3 是 AWS(亞馬遜網絡服務)的 Python SDK,可以方便地在 Python 程序中調用 AWS 的各種服務24。
- botocore 是 boto3 的底層核心庫,提供了與 AWS 服務交互的低級 API25。
- pytest-subtests 是一個 pytest 的插件,用於實現子測試的功能,可以在一個測試函數中運行多個獨立的測試用例26。
- pytest-mock 是一個 pytest 的插件,用於集成 mock 庫,可以方便地創建和使用模擬對象27。
- stackprinter 是一個用於美化和增強異常堆棧跟蹤的庫,可以顯示更多的上下文信息和顏色高亮28。
- pdf-diff 是一個用於比較兩個 PDF 文件差異的庫,可以生成帶有差異標記的 PDF 報告29。
- pyminizip 是一個用於壓縮和解壓縮 ZIP 文件的庫,支持密碼保護和加密30。
3. local化框架
4. 第三方框架
Python 是一種廣泛使用的高級編程語言,它具有簡潔、優雅、易讀的語法,以及豐富的標準庫和第三方庫。Python 可以用於開發各種類型的應用程序,如 Web 應用、數據分析、機器學習、桌面應用等。在本文中,我們將介紹一個 Python 後端項目使用到的一些技術框架,包括數據交換、網絡通信、數據庫操作、模板引擎、文件處理、測試工具等。
4.1 數據交換
數據交換是指在不同系統或組件之間傳遞和處理數據的過程,通常涉及到數據的序列化和反序列化。序列化是指將數據轉換爲一種可傳輸或可存儲的格式,反序列化是指將序列化後的數據恢復爲原始的數據結構。常見的數據交換格式有 JSON、XML、YAML 等。本項目使用了以下幾個庫來實現數據交換:
- protobuf:protobuf 是 Google 的數據交換格式,可以在不同語言和平臺之間高效地序列化和反序列化結構化數據。protobuf 使用 .proto 文件來定義數據結構和服務接口,然後通過編譯器生成對應語言的代碼。protobuf 支持多種基本類型和複合類型,以及可選字段、重複字段、枚舉類型等特性。protobuf 的優點是速度快、體積小、兼容性好,適合用於網絡通信或持久化存儲。
- dicttoxml:dicttoxml 是一個將 Python 字典或其他原生數據類型轉換爲有效 XML 字符串的庫,支持多種數據類型和嵌套結構。XML(可擴展標記語言)是一種標記語言,用於描述和存儲結構化數據。XML 的優點是可讀性好、通用性強,適合用於配置文件或文檔處理。
- PyYAML:PyYAML 是一個用於解析和生成 YAML(一種人類可讀的數據序列化格式)文檔的庫。YAML 是一種類似於 JSON 的數據格式,但更加簡潔和優雅。YAML 的優點是易於編寫和閱讀,適合用於配置文件或元數據描述。
4.2 網絡通信
網絡通信是指在不同系統或組件之間通過網絡協議進行信息交換的過程,通常涉及到請求和響應的發送和接收,以及連接管理、錯誤處理、安全驗證等功能。常見的網絡協議有 HTTP、HTTPS、AMQP 等。本項目使用了以下幾個庫來實現網絡通信:
- requests:requests 是一個簡潔且優雅的 HTTP 庫,支持發送各種請求(如 GET, POST, PUT, DELETE 等),處理響應(如狀態碼、頭部、內容等),設置超時、添加頭部、上傳文件、處理 Cookies、使用代理等功能。requests 還支持 SSL 證書驗證,可以使用 certifi 庫提供的 Mozilla 的根證書集合來驗證 SSL 證書的信任性和身份。
- gevent:gevent 是一個基於協程的 Python 網絡庫,使用 greenlet 提供了一個高層同步 API 來封裝 libev 或 libuv 事件循環,支持異步 I/O、SSL、DNS 查詢、子進程等功能。gevent 可以實現高併發和高性能的網絡應用,通過 monkey patching 可以讓大多數標準庫和第三方庫變爲非阻塞式。
- pika:pika 是一個純 Python 實現的 AMQP(高級消息隊列協議)客戶端庫,支持 RabbitMQ 等消息中間件。AMQP 是一種應用層協議,用於實現消息的發佈、路由、傳輸和確認。pika 提供了多種連接適配器,如 BlockingConnection, SelectConnection, AsyncioConnection 等,以及多種通道方法,如 exchange_declare, queue_declare, basic_publish, basic_consume 等。
4.3 數據庫操作
數據庫操作是指在應用程序和數據庫之間進行數據的增刪改查的過程,通常涉及到數據庫的連接、事務、語句、結果集等概念。常見的數據庫有關係型數據庫(如 MySQL, PostgreSQL, Oracle 等)和非關係型數據庫(如 MongoDB, Redis, Cassandra 等)。本項目使用了以下幾個庫來實現數據庫操作:
- SQLAlchemy:SQLAlchemy 是一個著名的 ORM(對象關係映射)框架,支持多種數據庫後端,提供了高層的對象模型和低層的 SQL 表達式語言。SQLAlchemy 可以將 Python 對象映射到數據庫表中,實現對象和數據的同步,以及對數據的查詢、更新、刪除等操作。SQLAlchemy 還支持事務、連接池、事件監聽等功能。
- PyMySQL:PyMySQL 是一個純 Python 實現的 MySQL 客戶端庫,支持 Python DB API 2.0 規範。PyMySQL 可以直接與 MySQL 服務器進行通信,執行 SQL 語句,獲取結果集等。PyMySQL 還支持 SSL 加密、壓縮協議、預處理語句等功能。
- boto3:boto3 是 AWS(亞馬遜網絡服務)的 Python SDK,可以方便地在 Python 程序中調用 AWS 的各種服務,如 S3(對象存儲)、DynamoDB(非關係型數據庫)、RDS(關係型數據庫服務)等。boto3 提供了高層的資源對象和低層的客戶端對象,以及多種集合和分頁器等工具。
4.4 模板引擎
模板引擎是指將數據和模板結合起來生成目標文檔的工具,通常用於生成 HTML、XML、PDF 等格式的文檔。模板引擎通常提供了一種特定的模板語法,用於定義變量、控制流、過濾器等元素。本項目使用了以下幾個庫來實現模板引擎:
- Jinja2:Jinja2 是一個現代化且設計友好的模板引擎,參考了 Django 的模板語法,支持模板繼承、宏、自動 HTML 轉義、沙箱執行等功能。Jinja2 還提供了多種加載器和擴展,以及強大的表達式求值能力。
- pdfkit:pdfkit 是一個將 HTML 轉換爲 PDF 的庫,基於 wkhtmltopdf 工具。pdfkit 可以將 HTML 字符串或文件轉換爲 PDF 文件或字節流,並支持設置頁面大小、方向、邊距、編碼等參數。
- MarkupSafe:MarkupSafe 是一個實現文本對象的庫,可以對字符進行轉義,使其在 HTML 和 XML 中安全使用,防止 XSS 攻擊。MarkupSafe 還提供了一種 Markup 類型,用於表示已經轉義過的文本。
4.5 文件處理
文件處理是指對文件進行讀寫、壓縮、加密等操作的過程,通常涉及到文件的路徑、格式、內容等屬性。常見的文件格式有 TXT, CSV, JSON, XML, PDF, ZIP 等。本項目使用了以下幾個庫來實現文件處理:
- PyPDF2:PyPDF2 是一個用於操作 PDF 文件的庫,支持分割、合併、裁剪、加密等功能。PyPDF2 可以讀取 PDF 文件中的元數據、頁面、內容等信息,也可以修改或添加這些信息,以及創建新的 PDF 文件。
- cos-python-sdk-v5:cos-python-sdk-v5 是騰訊雲 COS(對象存儲)的 Python SDK,可以方便地在 Python 程序中調用 COS 的 API 接口。COS 是一種分佈式存儲服務,可以存儲和訪問海量的數據。cos-python-sdk-v5 提供了多種操作方法,如上傳、下載、刪除、複製、查詢等。
- pyminizip:pyminizip 是一個用於壓縮和解壓縮 ZIP 文件的庫,支持密碼保護和加密。ZIP 是一種常見的文件壓縮格式,可以將多個文件或文件夾打包成一個文件,減少存儲空間和傳輸時間。pyminizip 可以使用不同的壓縮級別和加密算法,如 zlib, bzip2, AES 等。
4.6 測試工具
測試工具是指用於檢驗和驗證代碼的正確性和質量的工具,通常涉及到單元測試、集成測試、功能測試、性能測試等類型。測試工具通常提供了一種特定的測試框架,用於定義測試用例、執行測試、生成報告等功能。本項目使用了以下幾個庫來實現測試工具:
- pytest:pytest 是一個流行的 Python 測試框架,支持自動發現和運行測試用例,以及多種插件和擴展。pytest 使用 assert 語句來編寫測試用例,支持參數化、分組、跳過等功能。pytest 還提供了多種輸出格式和選項,如 verbose, quiet, color, capture 等。
- pytest-subtests:pytest-subtests 是一個 pytest 的插件,用於實現子測試的功能,可以在一個測試函數中運行多個獨立的測試用例,並顯示每個子測試的結果。子測試可以避免因爲一個斷言失敗而導致整個測試函數終止的問題,提高測試的靈活性和可讀性。
- pytest-mock:pytest-mock 是一個 pytest 的插件,用於集成 mock 庫,可以方便地創建和使用模擬對象。模擬對象是一種用於替代真實對象的虛擬對象,可以模擬對象的行爲和屬性,以及記錄對象的調用情況。模擬對象可以用於隔離依賴、模擬異常、驗證結果等目的。
- stackprinter:stackprinter 是一個用於美化和增強異常堆棧跟蹤的庫,可以顯示更多的上下文信息和顏色高亮。stackprinter 可以幫助開發者快速定位和解決錯誤,提高調試效率。
5. 總結
本文介紹了一個 Python 後端項目使用到的一些技術框架,包括數據交換、網絡通信、數據庫操作、模板引擎、文件處理、測試工具等。這些技術框架都是 Python 生態中優秀且實用的庫,可以幫助開發者提高開發效率和代碼質量。當然,這些技術框架並不是唯一或最佳的選擇,開發者可以根據自己的需求和喜好選擇合適的技術框架。希望本文能給你一些啓發和參考。