# 做一個自己的 Python Packge > [time=Mon, Apr 10, 2023 1:21 PM] ###### tags: `Python` `Package` 最近因為工作上需要將 Excel 檔案轉成 `iOS`、`Android` 專案可用的語言包,由於以前有其他同事分享的 `php` 程式碼又加上最近有接觸一點 `Python`,剛好藉此機會寫寫 `Python` 的腳本。 至於為什麼會需要打包成 `Packge`?主因是維護方便,原先預計這個腳本就單純 `iOS` 專案自己使用,但因為需求兩邊平台一致變成也要同時支援 `Android`;加上我不想同時維護兩邊的專案,綜述以上種種就來打包成 `Packge` 吧。 ## 讓我們開始吧 > Pythone 版本因應你的程式碼,這裡沒有特別限制 ### 1. 能跑的 code > 有一份可以跑的程式碼,不論複雜與否都可以。 ### 2. 安裝依賴套件 > [modern-package-template](https://github.com/srid/modern-package-template) 大約已有 13 年未更新,模板生成之後有部分錯誤需要手動修復。 * 1. `$ pip3 install modern-package-template` ### 3. 建立 Package 專案 * 1. `$ paster create -t modern_package {自訂名稱}` * 2. 依照提示填入相應訊息 * 3. 修復錯誤 <img src="https://i.imgur.com/bhJSwQM.png"> ### 4. 調整 Package 的資訊 * 1. 打開 `setup.py`,可以在此調整版本或者介紹 <img src="https://i.imgur.com/7V2TMYT.png" width="80%"> ### 5. 在 venv 安裝 Package > 因為是透過模板產生的 Package 專案,裡面有 venv 虛擬環境方便測試、安裝 * 1. `$ python setup.py install` * 2. 執行完成後你會發現多了這兩個目錄 <img src="https://i.imgur.com/uS8ZLx6.png"> * 3. 使用 `$ pip show {自訂名稱}` 來檢查安裝的結果 <img src="https://i.imgur.com/04Ldsii.png"> ### 6. 執行 > 建立一個空白 Python,import 進來並執行 * 1. 當你看到 `Hello World`,你就成功了一半 <img src="https://i.imgur.com/GvxOAKB.png"> * 2. 剩下的一半就是把你要打包的程式碼逐一搬進專案中 `src/{自訂名稱}` 的目錄下 (例) <img src="https://i.imgur.com/aBt449N.png" width="50%"> ### 7. 再次執行 > 當修改過 `src` 目錄下的程式碼 > 請記得再跑過 `$ python setup.py install`,確保測試環境中的 `Package` 在修改後的版本 ## 還記得標題嗎?做一個自己的 Python Package 顧名思義,這是一個 `Private` 的 Python Package,所以我並沒有要讓他推上 `PyPI`;而是使用 `Git` Repository。 ### 1. Git > 若你是位成熟的工程師,想必這個不必我多描述。 ### 2. 使用與安裝 * 1. `$ pip install git+{git repository ssh}` * 2. 使用方式就如同在虛擬環境一樣。 ### 3. You done 這樣你就完成了自己的 Python Package,很容易吧 🎉 --- * 參考 https://github.com/srid/modern-package-template * 參考 https://wanghenshui.github.io/2020/01/30/pip-package.html * 參考 https://docs.readthedocs.io/en/stable/guides/private-python-packages.html * 參考 https://towardsdatascience.com/create-your-custom-python-package-that-you-can-pip-install-from-your-git-repository-f90465867893