」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Mac OS X 上的 Python 專案創建

Mac OS X 上的 Python 專案創建

發佈於2024-11-09
瀏覽:788

介紹

PyFabricate 是一款 Mac OS X 應用程序,可簡化 Python 專案的建立。 自從我創作它以來,顯然它是我認為 Python 專案應該是什麼樣子的一個固執己見的版本。 此外,我還有一個特定的工具集,可以用來編寫 Python Mac OS X 應用程式。 但是,我嘗試透過公開建立專案文件的範本來建立一些自訂。 稍後詳細介紹。

概述

PyFabricate 使用類似精靈的介面來查詢專案詳細資訊。

自以為是的假設

  • 開發人員使用 HomeBrew 安裝固執己見的依賴項。

    • Python 透過 pyenv 進行管理(用於創建的虛擬環境)
    • direnv 已安裝(可選)
  • 專案名稱與模組包名稱相同

安裝

從此處獲取當前版本。

將此檔案複製到您的 Mac OS 應用程式資料夾。 該應用程式是 Apple 程式碼簽署的,因此您將收到一條簡單的訊息,您必須在第一次執行它時確認。

項目骨架詳細信息

以下是 PyFabricator 所建立的初始骨架的範例。 它現在確實顯示了它創建的虛擬環境。 稍後詳細介紹。

Python Project Creation on Mac OS X

本質上,PyFabricate 會建立 src 和測試目錄。 在專案根目錄中它建立以下檔案:

  • .envrc
  • .gitignore
  • .mypi.ini
  • .python_version
  • 。執照
  • README.md
  • pyproject.toml
  • 要求.txt

此外,PyFabricate 在所有適當的位置建立所有 python 套件檔案 (__init__.py)。 最後,它放置了兩組日誌記錄配置文件,一組用於您的應用程序,一組用於您的單元測試。

在製造結束時,PyFabricate 會建立一個 Python 虛擬環境。由於技術限制,PyFabricate 無法使用 pyenv 版本的 Python 來建立虛擬環境。 因此,它取決於自製軟體安裝的版本。

嚮導介面

嚮導 UI 是一個 4 步過程,其中 PyFabricate 收集足夠的項目詳細信息,用於填充骨架模板。 這些模板使用以下不言自明的替換標記。

代幣名稱 描述
PROJECT_NAME 用於建構基礎專案目錄,是Python模組名稱
描述 作為描述放置在生成的 pyproject.toml 中
OWNER_NAME 作為作者姓名和維護者姓名放置在生成的 pyproject.toml 中
OWNER_EMAIL 在產生的 pyproject.toml 中作為作者和維護者的電子郵件地址
關鍵字 用作產生的pyproject.toml中的項目關鍵字
PYTHON_VERSION 在產生的.gitignore檔案中使用以排除包含虛擬環境的目錄。 另外附加為產生的虛擬環境的目錄名稱。 例如,'pyenv-3.12.0'

以下是pyroject.toml模板的帶註釋的圖形。

Python Project Creation on Mac OS X

精靈 UI 步驟 1 - 簡介

這一步是PyFabricate的介紹。 在此步驟之後,PyFabricate 會盡最大努力確保滿足其執行依賴性。 如果不是,開發者無法繼續執行此步驟。

Python Project Creation on Mac OS X

嚮導 UI 步驟 2 - 項目詳細信息

在此步驟 PyFabricate 收集專案特定資訊。 其中大部分用於填充 pyproject.toml 模板。

Python Project Creation on Mac OS X

精靈 UI 步驟 3 - 基本目錄

PyFabricate 假設開發人員將其所有 Python 專案保存在一個子目錄中。 這是一種固執己見的觀點,只是一種組織偏好。

Python Project Creation on Mac OS X

精靈 UI 步驟 4 - Python 版本

PyFabricate 查詢 pyenv 以取得開發人員安裝的 Python 版本。 這些是 PyFabricate 可以創建 Python 虛擬環境的唯一環境。

Python Project Creation on Mac OS X

行動日誌

在精靈結束時,PyFabricate 在建立專案時會顯示一個日誌。 以下是範例日誌。

Python Project Creation on Mac OS X

客製化

如前所述,開發人員可以自訂專案產生的某些方面。 PyFabricate 將其使用的範本儲存在 $HOME/.config/pyfabricate/templates 中,如下所示。

Python Project Creation on Mac OS X
例如,開發人員可能想要使用差異許可證。 簡單地,替換LICENSE.template檔案

包起來

PyFabricate 目前只有 0.5.0 版本。 我目前正在研究添加附加功能並消除限制。

版本聲明 本文轉載於:https://dev.to/hasii2011/python-project-creation-on-mac-os-x-3bb4?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 在UTF8 MySQL表中正確將Latin1字符轉換為UTF8的方法
    在UTF8 MySQL表中正確將Latin1字符轉換為UTF8的方法
    在UTF8表中將latin1字符轉換為utf8 ,您遇到了一個問題,其中含義的字符(例如,“jáuòiñe”)在utf8 table tabled tablesset中被extect(例如,“致電。為了解決此問題,您正在嘗試使用“ mb_convert_encoding”和“ iconv”轉換受...
    程式設計 發佈於2025-06-27
  • Python元類工作原理及類創建與定制
    Python元類工作原理及類創建與定制
    python中的metaclasses是什麼? Metaclasses負責在Python中創建類對象。就像類創建實例一樣,元類也創建類。他們提供了對類創建過程的控制層,允許自定義類行為和屬性。 在Python中理解類作為對象的概念,類是描述用於創建新實例或對象的藍圖的對象。這意味著類本身是使用...
    程式設計 發佈於2025-06-27
  • Java數組中元素位置查找技巧
    Java數組中元素位置查找技巧
    在Java數組中檢索元素的位置 利用Java的反射API將數組轉換為列表中,允許您使用indexof方法。 (primitives)(鏈接到Mishax的解決方案) 用於排序陣列的數組此方法此方法返回元素的索引,如果發現了元素的索引,或一個負值,指示應放置元素的插入點。
    程式設計 發佈於2025-06-27
  • 為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    在CSS 問題:不正確的代碼: 全球範圍將所有餘量重置為零,如提供的代碼所建議的,可能會導致意外的副作用。解決特定的保證金問題是更建議的。 例如,在提供的示例中,將以下代碼添加到CSS中,將解決餘量問題: body H1 { 保證金頂:-40px; } 此方法更精確,避免了由全局保證金重置...
    程式設計 發佈於2025-06-27
  • C++20 Consteval函數中模板參數能否依賴於函數參數?
    C++20 Consteval函數中模板參數能否依賴於函數參數?
    [ consteval函數和模板參數依賴於函數參數在C 17中,模板參數不能依賴一個函數參數,因為編譯器仍然需要對非contexexpr futcoriations contim at contexpr function進行評估。 compile time。 C 20引入恆定函數,必須在編譯時進...
    程式設計 發佈於2025-06-27
  • Android如何向PHP服務器發送POST數據?
    Android如何向PHP服務器發送POST數據?
    在android apache httpclient(已棄用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    程式設計 發佈於2025-06-27
  • 如何有效地轉換PHP中的時區?
    如何有效地轉換PHP中的時區?
    在PHP 利用dateTime對象和functions DateTime對象及其相應的功能別名為時區轉換提供方便的方法。例如: //定義用戶的時區 date_default_timezone_set('歐洲/倫敦'); //創建DateTime對象 $ dateTime = ne...
    程式設計 發佈於2025-06-27
  • 表單刷新後如何防止重複提交?
    表單刷新後如何防止重複提交?
    在Web開發中預防重複提交 在表格提交後刷新頁面時,遇到重複提交的問題是常見的。要解決這個問題,請考慮以下方法: 想像一下具有這樣的代碼段,看起來像這樣的代碼段:)){ //數據庫操作... 迴聲“操作完成”; 死(); } ? > ...
    程式設計 發佈於2025-06-27
  • 如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    將pandas dataframe列轉換為dateTime格式示例:使用column(mycol)包含以下格式的以下dataframe,以自定義格式:})指定的格式參數匹配給定的字符串格式。轉換後,MyCol列現在將包含DateTime對象。 date oped filtering > = ...
    程式設計 發佈於2025-06-27
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-06-27
  • 為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    程式設計 發佈於2025-06-27
  • Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    在ASP.NET async void void async void void void void void的設計無需返回asynchroncon而無需返回任務對象。他們在執行過程中增加未償還操作的計數,並在完成後減少。在某些情況下,這種行為可能是有益的,例如未期望或明確預期操作結果的火災和...
    程式設計 發佈於2025-06-27
  • MySQL中如何高效地根據兩個條件INSERT或UPDATE行?
    MySQL中如何高效地根據兩個條件INSERT或UPDATE行?
    在兩個條件下插入或更新或更新 solution:的答案在於mysql的插入中...在重複鍵更新語法上。如果不存在匹配行或更新現有行,則此功能強大的功能可以通過插入新行來進行有效的數據操作。如果違反了唯一的密鑰約束。 實現所需的行為,該表必須具有唯一的鍵定義(在這種情況下為'名稱'...
    程式設計 發佈於2025-06-27
  • 您可以使用CSS在Chrome和Firefox中染色控制台輸出嗎?
    您可以使用CSS在Chrome和Firefox中染色控制台輸出嗎?
    在javascript console 中顯示顏色是可以使用chrome的控制台顯示彩色文本,例如紅色的redors,for for for for錯誤消息? 回答是的,可以使用CSS將顏色添加到Chrome和Firefox中的控制台顯示的消息(版本31或更高版本)中。要實現這一目標,請使用以下...
    程式設計 發佈於2025-06-27
  • PHP與C++函數重載處理的區別
    PHP與C++函數重載處理的區別
    作為經驗豐富的C開發人員脫離謎題,您可能會遇到功能超載的概念。這個概念雖然在C中普遍,但在PHP中構成了獨特的挑戰。讓我們深入研究PHP功能過載的複雜性,並探索其提供的可能性。 在PHP中理解php的方法在PHP中,函數超載的概念(如C等語言)不存在。函數簽名僅由其名稱定義,而與他們的參數列表無關...
    程式設計 發佈於2025-06-27

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

Copyright© 2022 湘ICP备2022001581号-3