」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 我應該使用哪些工具來進行 Python 套件管理? Distutils、Setuptools、Distribute 和 Distutils2 指南。

我應該使用哪些工具來進行 Python 套件管理? Distutils、Setuptools、Distribute 和 Distutils2 指南。

發佈於2024-11-08
瀏覽:402

 What tools should I use for Python Package Management? A Guide to Distutils, Setuptools, Distribute, and Distutils2.

探索Distribute、Distutils、Setuptools 和Distutils2 之間的區別

Python 套件管理隨著時間的推移不斷發展,引入了各種用於不同目的的工具。了解這些工具之間的細微差別對於高效的軟體分發和安裝至關重要。

Distutils:標準函式庫遺產

Distutils 已合併到 Python 的標準函式庫中,提供建立和分發 Python 套件的基本功能。然而,它的局限性,例如缺乏依賴管理和複雜設置的挑戰,導致了替代解決方案的出現。

Setuptools:擴展 Distutils 的功能

Setuptools 的創建就是為了解決這些缺點Distutils 的。它引入了改進的依賴管理、對 easy_install 的支援以及將其功能直接導入 setup.py 腳本的功能。然而,setuptools 的「猴子修補」技術會改變 Distutils 命名空間,可能會導致相容性問題。

Distutils2:從未獲得關注的雄心勃勃的合併

Distutils2 旨在合併最好的方面Distutils、Setuptools 和 Distribute。然而,它的開發陷入停滯,最終被放棄。

Distribute:具有短暫相關性的Setuptools 分支

Distribute 作為Setuptools 的一個分支出現。它共享相同的命名空間,導致導入Setuptools實際上導入隨Distribute分發的版本。然而,Distribute 現已過時,因為它已合併回 Setuptools 版本 0.7

當前格局和建議

截至 2022 年,Python 打包格局已發生顯著變化,其中一些較新的工具日益受到關注。然而,對於那些剛開始使用的人來說,Setuptools 仍然是建議的選擇。它的成熟度、與 pip 和 virtualenv 的兼容性以及強大的文件使其成為 Python 套件管理的可靠選擇。

雖然 distutils 已被棄用並且 distutils2 已被放棄,但 scikit-build 為已編譯的 Python 擴展提供了增強的構建功能。 Distlib 和打包作為進階工具使用的基本函式庫。

最新教學 更多>
  • 為什麼我的 MySQL 查詢在 PHP 中回傳「資源 id #6」?
    為什麼我的 MySQL 查詢在 PHP 中回傳「資源 id #6」?
    在PHP 中回顯MySQL 回應的資源ID #6在PHP 中使用MySQL 擴充查詢資料庫時,您可能會遇到“Resource id #6”輸出而不是預期結果。發生這種情況是因為查詢傳回資源,而不是字串或數值。 回顯結果要顯示預期結果,您必須先使用下列指令取得資料提供的取得函數之一。其中一個函數是 m...
    程式設計 發佈於2024-11-08
  • 使用 React Query 建立 Feed 頁面
    使用 React Query 建立 Feed 頁面
    目标 在本文中,我们将探索如何使用 React Query 构建提要页面! 这是我们将要创建的内容: 本文不会涵盖构建应用程序所涉及的每个步骤和细节。 相反,我们将重点关注关键功能,特别是“无限滚动”和“滚动到顶部”功能。 如果您有兴趣咨询整个实现,您可以在此 GitHub 存...
    程式設計 發佈於2024-11-08
  • (SQL 查詢)Express.js 中的快取與索引
    (SQL 查詢)Express.js 中的快取與索引
    開發者您好,這是我在這個平台上的第一篇文章! ? 我想分享我在 Express.js 和 SQL 方面的令人驚訝的體驗。我是一名初學者開發人員,在為我的專案開發 API 時,我每天處理超過 20 萬個 API 請求。最初,我使用 Express.js API 設定了一個 SQLite 資料庫(約 ...
    程式設計 發佈於2024-11-08
  • 如何防止 Chrome 的自動填充更改您的字體?
    如何防止 Chrome 的自動填充更改您的字體?
    克服Chrome 的自動填充字體變更挑戰在Windows 上遇到Chrome 的自動填充功能時,您可能會遇到煩人的字體更改問題。將滑鼠懸停在已儲存的使用者名稱上時,字體大小和樣式會發生變化,從而破壞表單的對齊方式。雖然您可以對輸入套用固定寬度來緩解此問題,但更有效的解決方案是完全防止字體變更。 要實...
    程式設計 發佈於2024-11-08
  • 以下是一些適合您文章內容的基於問題的標題:

* 如何為 Spring Boot 應用程式配置上下文路徑?
* 如何使用自訂 Con 存取我的 Spring Boot 應用程式
    以下是一些適合您文章內容的基於問題的標題: * 如何為 Spring Boot 應用程式配置上下文路徑? * 如何使用自訂 Con 存取我的 Spring Boot 應用程式
    如何為Spring Boot 應用程式添加上下文路徑Spring Boot 提供了一種簡單的方法來設定應用程式的上下文根,允許它透過localhost:port/{app_name} 存取。操作方法如下:使用應用程式屬性:在src/main/resources 目錄中建立一個application....
    程式設計 發佈於2024-11-08
  • 程式碼日數:進階循環
    程式碼日數:進階循環
    2024 年 8 月 30 日星期五 我目前正在學習 Codecademy 全端工程師路徑的第二門課程。我最近完成了 JavaScript 語法 I 課程,並完成了 JavaScript 語法 II 中的陣列和循環作業。接下來是物件、迭代器、錯誤和調試、練習和三個挑戰項目。 今天的主要亮點是學習對...
    程式設計 發佈於2024-11-08
  • Angular Addicts # Angular 隱式函式庫,未來是獨立的等等
    Angular Addicts # Angular 隱式函式庫,未來是獨立的等等
    ?嘿,Angular Addict 夥伴 這是 Angular Addicts Newsletter 的第 29 期,這是一本每月精選的引起我注意的 Angular 資源合集。 (這裡是第28期、27期、26期) ?發佈公告 ? Angular 18...
    程式設計 發佈於2024-11-08
  • 機器學習中的 C++:逃離 Python 與 GIL
    機器學習中的 C++:逃離 Python 與 GIL
    介紹 當 Python 的全域解釋器鎖定 (GIL) 成為需要高並發或原始效能的機器學習應用程式的瓶頸時,C 提供了一個引人注目的替代方案。這篇部落格文章探討如何利用 C 語言進行 ML,並專注於效能、並發性以及與 Python 的整合。 閱讀完整的部落格! ...
    程式設計 發佈於2024-11-08
  • 如何在 Java HashMap 中將多個值對應到單一鍵?
    如何在 Java HashMap 中將多個值對應到單一鍵?
    HashMap 中將多個值對應到單一鍵在 Java 的 HashMap 中,每個鍵都與單一值關聯。但是,在某些情況下,您可能需要將多個值對應到單一鍵。以下是實現此目的的方法:多值映射方法:最簡單、最直接的方法是使用列表映射。這涉及創建一個 HashMap,其中的值是包含多個值的 ArrayList。...
    程式設計 發佈於2024-11-08
  • 如何使用 PHP 有效率地檢查檔案中的字串?
    如何使用 PHP 有效率地檢查檔案中的字串?
    如何在PHP 中檢查文件是否包含字串要確定文件中是否存在特定字串,讓我們探索一下解決方案和更有效的替代方案。 原始程式碼:提供的程式碼嘗試檢查透過逐行讀取檔案來判斷檔案中是否存在由變數 $id 表示的字串。但是,while 迴圈中的條件 (strpos($buffer, $id) === false...
    程式設計 發佈於2024-11-08
  • 小型 Swoole 實體管理器
    小型 Swoole 實體管理器
    我很高興向大家介紹 Small Swoole Entity Manager。 它是一個圍繞 Swoole(和 OpenSwoole)構建的 ORM。 它支援非同步連接到: MySQL Postgres Small Swoole Db(Swoole Tables 之上的關係層) 目前僅提供核心包...
    程式設計 發佈於2024-11-08
  • WebCodec - 發送和接收
    WebCodec - 發送和接收
    介绍 你好! ? 在本教程中,我将向您展示如何使用 WebCodec API 发送和接收视频。 首先让我们对服务器进行编码。 设置服务器 为了在对等点之间发送和接收数据包,我们需要一个 websocket 服务器。 为此,我们将使用 Nodejs 创建一个非常基...
    程式設計 發佈於2024-11-08
  • 為什麼 PHP ftp_put() 失敗:分析與解決問題
    為什麼 PHP ftp_put() 失敗:分析與解決問題
    PHP ftp_put 失敗:分析問題並解決它傳輸時ftp_put() 無法正常運行可能是一個令人沮喪的問題通過FTP 傳輸檔案。在 PHP 中,此問題的常見原因在於預設使用主動模式。 主動與被動模式傳輸主動模式指示 FTP 伺服器連接到指定連接埠上的用戶端。另一方面,被動模式讓伺服器偵聽隨機端口,...
    程式設計 發佈於2024-11-08
  • 如何從字串中刪除非數字字符,同時保留 Java 中的小數位分隔符?
    如何從字串中刪除非數字字符,同時保留 Java 中的小數位分隔符?
    在刪除Java 字串中的非數字字元時保留小數分隔符號使用Java 字串時,可能會出現您需要的情況刪除所有非數字字符,同時保留小數點分隔符。使用正規表示式和replaceAll()方法可以有效地實現這一點。 為了解決這個問題,我們可以使用以下程式碼片段:String str = "a12.3...
    程式設計 發佈於2024-11-08
  • 如何重新排列 MySQL 中的欄位以提高資料視覺性和查詢效率?
    如何重新排列 MySQL 中的欄位以提高資料視覺性和查詢效率?
    有效地重新排列 MySQL 列以增強可見性當列沒有最佳排序時,查詢大型資料庫可能會很麻煩。本文提供了一個全面的解決方案,可以輕鬆地重新排列現有列,優化表的可見性而不影響其資料完整性。 要修改列的位置,請使用「ALTER TABLE」指令,後面接著「MODIFY」子句。此語法允許您透過在指定的引用列之...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3