<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 項(xiàng)目代碼寫完了,然后怎么打包和發(fā)布?

          共 1749字,需瀏覽 4分鐘

           ·

          2020-07-24 07:11


          你把你的代碼寫完了,是不是要給別人使用下,怎么打包你的項(xiàng)目代碼呢?
          喂,開源么?


          320009850b5f40242e766814ccf718b2.webp

          接下來小帥b就跟你說說,如何打包你的代碼。

          就拿我們上次演示的?todo?為例,寫完代碼之后,代碼的目錄是這樣的:


          13b59c93ae779c55efa207001e05882b.webp



          在 todo 這個目錄里面,文件都放在一起了,我們可以這樣簡單劃分一下:



          bb4b93f66a2203d5a52aa58d556512ed.webp




          這里創(chuàng)建了一個 package 目錄,將源碼文件放進(jìn)去,然后把模板文件和數(shù)據(jù)庫文件分門別類的安排好。
          在 package 中,還創(chuàng)建了一個 __init__.py 儀式感一下。
          為了讓別人知道你是認(rèn)真對待這個項(xiàng)目的,你可以在項(xiàng)目文件中創(chuàng)建一個 tests 目錄,在里面測試你的代碼:



          10573b7a9ac5ff8682a77f99a168f325.webp




          接著可以創(chuàng)建一個 LICENSE ,用來說明你的這個項(xiàng)目可以被怎么使用?是不是需要聲明來源,是不是可以商用?別人用你的項(xiàng)目去搞事情如何避免被抓去吃牢飯等。

          現(xiàn)成的開源協(xié)議有好幾種,不太了解的可以看看我之前寫的這個:那些 GitHub 所聲明的開源協(xié)議都是什么意思?


          2119ea6a8362cf6198375cb31ab76b2e.webp



          接著再創(chuàng)建一個 README 文件,來說明你這個項(xiàng)目是干什么的,如何使用等描述。


          141849dc92f45e7d79d17afde2b93d58.webp



          現(xiàn)在你的項(xiàng)目文件目錄就有點(diǎn)人模人樣了:



          4d528c1376fe7abb20d60a857ef874c5.webp




          接下來要創(chuàng)建一個比較重要的文件了?—— setup.py,這個文件主要用來描述你的項(xiàng)目信息,好讓 setuptools 打包工具來幫你打包項(xiàng)目。
          在根目錄下創(chuàng)建一個 setup.py 文件,按以下的方式來寫你的項(xiàng)目信息:

          dfe612d6e30ef10aaf7920299e1181e8.webp




          每個參數(shù)都是什么意思呢?我來給你說明一下:

          long_description:對項(xiàng)目比較長的描述,我們可以直接從 你剛剛寫的 README 文件讀取。


          a84146761dc2aa7023d45bf573c8c891.webp




          name:?你定義的包名,可以用字母、數(shù)字、下劃線,需要確保唯一性。
          version:?項(xiàng)目的版本號。

          author: 你(作者)的名稱。
          author_email:?你(作者) 的郵箱。
          description: 項(xiàng)目的簡要描述。
          long_description_content_type:長描述內(nèi)容的使用的標(biāo)記類型,一般為 markdown 或者 rst。
          url: 你這個項(xiàng)目的主頁地址,也可以直接鏈接到你這個項(xiàng)目的Github 地址上面去。
          include_package_data: 是否添加 py 以外的文件。
          package_data: 需要添加 Python 的額外文件列表。
          packages: 直接用 setuptool 找到你項(xiàng)目所有相關(guān)的包列表。
          classifiers:?附加說明,比如這里寫的就是使用于 Python3 版本,使用的是 MIT 協(xié)議,獨(dú)立于 OS。
          python_requires: python 版本要求。
          那么現(xiàn)在,你的項(xiàng)目目錄應(yīng)該是這樣子的:


          887e3a9cd04de9b7642fd566a81e5460.webp




          接下來就可以打包了。

          如果你之前沒有安裝過 setuptools 和 wheel 可以先安裝一波:

          python3 -m pip install?--upgrade setuptools wheel

          66840d98ee13d48a1d97a50e8049e06c.webp



          然后在你的項(xiàng)目根目錄下,使用如下命令打包:

          python3 setup.py sdist bdist_wheel

          f7cc9d405dc3cd8b519ca6940452f07a.webp



          這時(shí)候你的目錄會增加這么些文件:


          d5d7f2ff235b14b2eb6e5e317c23ab92.webp



          這樣就算打包好了,在 dist 目錄中,以 tar.gz 結(jié)尾的是你項(xiàng)目的源文件,而以 .whl 結(jié)尾的就是構(gòu)建好了給別人使用的發(fā)行版。

          那么如何將你打包好的項(xiàng)目發(fā)布出來,給別人使用呢?
          其實(shí)之前有說過了,這里再簡單的說一下吧:
          先安裝一下 twine:
          python3 -m pip install twine
          接著使用 twine 將你打包好的文件上傳到 pypi?上面去:
          twine upload dist/*
          這時(shí)候它會提示你輸入 pypi 的賬號密碼:

          5ee79ed5a8ad5c4e762d640881352650.webp



          沒有怎么辦?去注冊一個唄,到以下鏈接注冊:https://pypi.org/account/register/
          接著輸入你的賬號密碼,就可以上傳上去了:


          ca3509cbb8b0b01ff22d54da59f108b6.webp



          這時(shí)候別人就可以通過 pip 來安裝你的項(xiàng)目了:

          70c7dc6f75af5a9cf23149c71cc12d04.webp

          50d05eddc0e96f37446ca2dba6c354e1.webp



          像這樣:


          a75277d4048ccf99abc7277f8d7bb8ee.webp



          然后就可以給別人使用你的包了:


          11c5809a19c11b09642fde942847de3e.webp



          你在 pip install 的時(shí)候,其實(shí)就是下載你上傳的 whl 文件然后安裝:


          a75277d4048ccf99abc7277f8d7bb8ee.webp

          如果你不想開源,只想給你朋友使用的話,你也可以直接把 dist 這個目錄下的文件發(fā)給他,讓他自行安裝一波就可以使用了:

          d18b9aa0e9c81ceaa00e1663811edce1.webp

          1b95670af1a784c43aab1fb2a58c0026.webp



          ok,以上就是今天小帥b給你帶來的分享,希望對你有幫助,那么我們下回見,peace!


          d551aa2803da1649cd2c4c09e219864a.webp

          掃一掃

          學(xué)習(xí) Python 沒煩惱



          瀏覽 77
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲区成人777777精品 | 色婷婷色综合 | 亲子乱AV一区二区 | 玖玖精品视频一区二区三区四区 | 日韩欧美亚州小说图文视频 |