小帥b 學習python的正確姿式 python
你把你的代碼寫完了,是否是要給別人使用下,怎麼打包你的項目代碼呢?數據庫
喂,開源麼?markdown
接下來小帥b就跟你說說,如何打包你的代碼。ide
就拿咱們上次演示的 todo 爲例,寫完代碼以後,代碼的目錄是這樣的:工具
在 todo 這個目錄裏面,文件都放在一塊兒了,咱們能夠這樣簡單劃分一下:學習
這裏建立了一個 package 目錄,將源碼文件放進去,而後把模板文件和數據庫文件分門別類的安排好。測試
在 package 中,還建立了一個 init.py 儀式感一下。ui
爲了讓別人知道你是認真對待這個項目的,你能夠在項目文件中建立一個 tests 目錄,在裏面測試你的代碼:url
接着能夠建立一個 LICENSE ,用來講明你的這個項目能夠被怎麼使用?是否是須要聲明來源,是否是能夠商用?別人用你的項目去搞事情如何避免被抓去吃牢飯等。3d
現成的開源協議有好幾種,不太瞭解的能夠看看我以前寫的這個:那些 GitHub 所聲明的開源協議都是什麼意思?
接着再建立一個 README 文件,來講明你這個項目是幹什麼的,如何使用等描述。
如今你的項目文件目錄就有點人模人樣了:
接下來要建立一個比較重要的文件了 —— setup.py,這個文件主要用來描述你的項目信息,好讓 setuptools 打包工具來幫你打包項目。
在根目錄下建立一個 setup.py 文件,按如下的方式來寫你的項目信息:
每一個參數都是什麼意思呢?我來給你說明一下:
long_description:對項目比較長的描述,咱們能夠直接從 你剛剛寫的 README 文件讀取。
name: 你定義的包名,能夠用字母、數字、下劃線,須要確保惟一性。
version: 項目的版本號。
author: 你(做者)的名稱。
author_email: 你(做者) 的郵箱。
description: 項目的簡要描述。
long_description_content_type:長描述內容的使用的標記類型,通常爲 markdown 或者 rst。
url: 你這個項目的主頁地址,也能夠直接連接到你這個項目的Github 地址上面去。
include_package_data: 是否添加 py 之外的文件。
package_data: 須要添加 Python 的額外文件列表。
packages: 直接用 setuptool 找到你項目全部相關的包列表。
classifiers: 附加說明,好比這裏寫的就是使用於 Python3 版本,使用的是 MIT 協議,獨立於 OS。
python_requires: python 版本要求。
那麼如今,你的項目目錄應該是這樣子的:
接下來就能夠打包了。
若是你以前沒有安裝過 setuptools 和 wheel 能夠先安裝一波:
而後在你的項目根目錄下,使用以下命令打包:
這時候你的目錄會增長這麼些文件:
這樣就算打包好了,在 dist 目錄中,以 tar.gz 結尾的是你項目的源文件,而以 .whl 結尾的就是構建好了給別人使用的發行版。
那麼如何將你打包好的項目發佈出來,給別人使用呢?
其實以前有說過了,這裏再簡單的說一下吧:
先安裝一下 twine:
接着使用 twine 將你打包好的文件上傳到 pypi 上面去:
這時候它會提示你輸入 pypi 的帳號密碼:
沒有怎麼辦?去註冊一個唄,到如下連接註冊:
https://pypi.org/account/register/
接着輸入你的帳號密碼,就能夠上傳上去了:
這時候別人就能夠經過 pip 來安裝你的項目了:
像這樣:
而後就能夠給別人使用你的包了:
你在 pip install 的時候,其實就是下載你上傳的 whl 文件而後安裝:
若是你不想開源,只想給你朋友使用的話,你也能夠直接把 dist 這個目錄下的文件發給他,讓他自行安裝一波就可使用了:
ok,以上就是今天小帥b給你帶來的分享,但願對你有幫助,那麼咱們下回見,peace!