紫式書摘003:讀《Publishing Python Package》,思考「什麼是套件(Package)?」

更新 發佈閱讀 5 分鐘
raw-image

你好,歡迎閱讀《紫式書摘》。

我是王啟樺,目前在加州大學洛杉磯分校(UCLA)擔任統計機器學習方向的博士後研究員。

這篇文章是《紫式書摘》的第003篇文章,紀錄了我閱讀《Publishing Python Packages》的Chapter 1後,產生對「套件(Package)」的一些想法隨筆。

之所以想讀《Publishing Python Package》,是因為

  • Reason 1:學習自動化能力,是經營個人副業的基礎
  • Reason 2:工作上的勞動成果,要能更容易為他人所用
  • Reason 3:了解open source community的文化,取用大量優質免費資源

而閱讀完《Publishing Python Package》的Chapter 1,我學到了3個要點

  • Lesson 1:Packaging = Software + Metadata 套件=軟體+元數據.
  • Lesson 2:套件管理系統(Package management systems)是用來解決各種版本衝突.
  • Lesson 3:發布套件時,會放入4種檔案:Source code, makefile, Metadata, Instructions.

對「什麼是套件(Package)?」感興趣嗎?繼續往下閱讀吧:)

Lesson 1:套件=軟體+元數據 (Packaging = Software + Metadata)

一直覺得「套件」這個概念很抽象。但在這本書中,我讀到套件的定義為:

Packaging is the act of archiving software along with metadata that describes those files. 套件化本身,就是將「軟體」與「描述軟體檔案的元數據」建檔的過程。

這個定義解答了我很多疑惑。當只有程式碼而沒有解說,我們很難知道程式碼有什麼用。當只有解說而沒有程式碼,我們又會覺得在畫大餅,不實際。

同時有程式碼(code)與解說(nocode),讓東西真的能用起來,這就是套件(Packaging)的藝術。

的確,當使用他人的github儲存庫,如果解說不清楚就很難用。在我的學術工作中,常常需要搭配paper來讀懂作者寫的code的用法。好的paper相當於非常詳細的code使用手冊。因此,練習寫好軟體的解說,是重要的任務。

把軟體的解說寫好,有哪些習慣需要立即開始培養呢?

Lesson 2:套件管理系統(Package management systems)是用來解決各種版本衝突

我學到的第二件事,就是理解到套件管理系統(Package management systems),就是用來解決各種版本衝突的。

在安裝軟體的時候,我也用過如 pip 安裝Python package, 用conda安裝Pytorch,用Homebrew安裝Mac軟體。這些「安裝方式」或多或少有經驗,但是讀了這本書後知道,他們提供了

  • 安裝(install)
  • 解安裝(uninstall)
  • 更新(update)

套件,一個標準化的流程,讓大家的軟體使用更加順暢。

有了套件管理系統,開發者就可以指定好用戶的使用設定(Configuration)。

Lesson 3:發布套件時,會放入4種檔案:Source code, makefile, Metadata, Instructions.

我學到的第3件事,就是原來發布套件的時候,會需要放入4種檔案:

  • 原始程式碼(Source code)
  • 編譯程式碼的makefile
  • 程式碼的元數據 (Metadata)
  • 用戶指南 (Instructions for the consumer).

能夠設計套件真的是一個體力活。首先,能夠寫source code就已經很考驗硬技能。而寫用戶指南又很考驗軟技能。這些東西都不顯然,但是在現代卻很流行,就一定有它的用途。開始投資IT技能,就可以享用各種免費的資源。

不知道makefile與Metadata有什麼好用的寫作原則?

你是否也對「」開始感興趣了呢?謝謝你閱讀《紫式書摘》。如果覺得這個文章對你有幫助,歡迎

  1. 免費追蹤《紫式書摘》寫作專題
  2. 追蹤我的方格子
  3. 免費訂閱《紫式書齋》電子報
  4. 透過臉書與我隨意聊聊
  5. 追蹤我的Twitter看看英語世界
留言
avatar-img
留言分享你的想法!
avatar-img
王啟樺的沙龍
638會員
2.0K內容數
Outline as Content
王啟樺的沙龍的其他內容
2024/06/01
《Look Again》的第8頁提到,大腦具有一種特性: 當遇到讓你感到驚訝或是意想不到的事情時,你會做出強烈反應。 反之,若所有事情都可預測, 大腦的反應會變得遲鈍,甚至接近休眠狀態。 這表示你已經「習慣化」了那種情境。 舉例來說,當學生剛開始接觸學術論文時,
2024/06/01
《Look Again》的第8頁提到,大腦具有一種特性: 當遇到讓你感到驚訝或是意想不到的事情時,你會做出強烈反應。 反之,若所有事情都可預測, 大腦的反應會變得遲鈍,甚至接近休眠狀態。 這表示你已經「習慣化」了那種情境。 舉例來說,當學生剛開始接觸學術論文時,
2024/05/31
記得在國高中學寫作時,都會提到做Brainstorm頭腦風暴。 但我其實都不知道那具體要怎麼操作,覺得蠻唬爛的。 直到讀了神速時短的第69頁, 裡面提供了三種頭腦風暴的指導,我才恍然大悟。 這三種頭腦風暴的方式分別為: 1.多樣性頭腦風暴 2.針對性頭腦風暴 3.隨
2024/05/31
記得在國高中學寫作時,都會提到做Brainstorm頭腦風暴。 但我其實都不知道那具體要怎麼操作,覺得蠻唬爛的。 直到讀了神速時短的第69頁, 裡面提供了三種頭腦風暴的指導,我才恍然大悟。 這三種頭腦風暴的方式分別為: 1.多樣性頭腦風暴 2.針對性頭腦風暴 3.隨
2024/05/30
《Look Again》的第8頁介紹了一個有趣的概念 ---- 「主動抑制(Active Inhibition)」。 主動抑制指的是, 你的大腦會對意外的情況進行觀察, 並製作一些內部模型,成為你對某些情境的理解方式。 例如前陣子, 我到 International S
2024/05/30
《Look Again》的第8頁介紹了一個有趣的概念 ---- 「主動抑制(Active Inhibition)」。 主動抑制指的是, 你的大腦會對意外的情況進行觀察, 並製作一些內部模型,成為你對某些情境的理解方式。 例如前陣子, 我到 International S
看更多
你可能也想看
Thumbnail
情況描述 我們在「【🔒 Python 先修班】教你親手打包專屬套件庫的手作課(pip install…)」有提到如何打包Python讓自己的程式變成套件, 讓其他人可以用pip install的方式進行安裝,😲 But… 我們實際上打包後, 發現到引用的檔案都有被打包進去,但目錄卻未被打包
Thumbnail
情況描述 我們在「【🔒 Python 先修班】教你親手打包專屬套件庫的手作課(pip install…)」有提到如何打包Python讓自己的程式變成套件, 讓其他人可以用pip install的方式進行安裝,😲 But… 我們實際上打包後, 發現到引用的檔案都有被打包進去,但目錄卻未被打包
Thumbnail
在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件 在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件。以下是基本的安裝步驟: 確認p
Thumbnail
在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件 在Python中安裝套件通常是通過pip這個工具來完成的。 pip是Python的包管理器,用於安裝和管理Python套件。以下是基本的安裝步驟: 確認p
Thumbnail
寫程式不僅只是能動, 更要能夠看得懂, 如果我們的程式碼可以更貼近人類能懂的語言時, 後續的維護肯定會大幅度的減少成本, 想想我們回頭看看三個月前的程式碼是什麼感受吧…😫😫😫, 為了避免這樣的窘境, 我們還真的應該好好的為我們的程式碼負責, 除了「【🔒 Python 先修班】培養良好的Cod
Thumbnail
寫程式不僅只是能動, 更要能夠看得懂, 如果我們的程式碼可以更貼近人類能懂的語言時, 後續的維護肯定會大幅度的減少成本, 想想我們回頭看看三個月前的程式碼是什麼感受吧…😫😫😫, 為了避免這樣的窘境, 我們還真的應該好好的為我們的程式碼負責, 除了「【🔒 Python 先修班】培養良好的Cod
Thumbnail
👨‍💻簡介 套件(Package)在Golang中扮演著組織和管理程式碼的重要角色。 package就像工具箱一樣,裡面裝滿各種不同的工具,每個工具都有特定的功能。這些工具能夠幫助你完成不同的任務,從修理家具到蓋小屋,樣樣都行。
Thumbnail
👨‍💻簡介 套件(Package)在Golang中扮演著組織和管理程式碼的重要角色。 package就像工具箱一樣,裡面裝滿各種不同的工具,每個工具都有特定的功能。這些工具能夠幫助你完成不同的任務,從修理家具到蓋小屋,樣樣都行。
Thumbnail
⏳ 優質好文,歡迎支持與學習,讓阿Han給你最歡樂的學習課程、最貼近業界的實戰技巧…,just for fun fun fun…😄 相信對於具有開發基礎的學員們來說,基本的開發工程相信已經得心應手了, 那麼您們可能會苦於這些問題: ❓ 哇! pip install別人的程式好方便
Thumbnail
⏳ 優質好文,歡迎支持與學習,讓阿Han給你最歡樂的學習課程、最貼近業界的實戰技巧…,just for fun fun fun…😄 相信對於具有開發基礎的學員們來說,基本的開發工程相信已經得心應手了, 那麼您們可能會苦於這些問題: ❓ 哇! pip install別人的程式好方便
Thumbnail
在第十二課中,我們將學習 Python 中的模塊和包的概念。 模塊和包是 Python 中組織程式碼的主要方式,它們讓你能夠以邏輯和易於管理的方式組織你的程式碼。
Thumbnail
在第十二課中,我們將學習 Python 中的模塊和包的概念。 模塊和包是 Python 中組織程式碼的主要方式,它們讓你能夠以邏輯和易於管理的方式組織你的程式碼。
Thumbnail
在第七課,我們將談論 Python 中的模組 (Modules) 和套件 (Packages)。 模組和套件允許我們將 Python 程式碼組織成可重用的單元,有助於程式碼的模組化和重用。
Thumbnail
在第七課,我們將談論 Python 中的模組 (Modules) 和套件 (Packages)。 模組和套件允許我們將 Python 程式碼組織成可重用的單元,有助於程式碼的模組化和重用。
Thumbnail
Hi, 大家好。我是茶桁。 在我们之前的课程中,讲解了数据,函数,类,模块以及包。这些基本上已经构成了Python的全部了。 那么,我们在学习Python的包之后,有没有思考过,既然Python有内置模块,我们也可以自己写一些模块来使用,那一定有很多第三方写过相应的模块来供我们使用。那么,这
Thumbnail
Hi, 大家好。我是茶桁。 在我们之前的课程中,讲解了数据,函数,类,模块以及包。这些基本上已经构成了Python的全部了。 那么,我们在学习Python的包之后,有没有思考过,既然Python有内置模块,我们也可以自己写一些模块来使用,那一定有很多第三方写过相应的模块来供我们使用。那么,这
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News