<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項目打包發(fā)布到pypi

          共 2532字,需瀏覽 6分鐘

           ·

          2020-08-19 16:48

          最近心血來潮,想把自己的寫的python項目打包到pypi,也讓廣大朋友能夠通過pip來安裝我的python包。
          第一次嘗試,中間遇到了一些問題,記錄下來,方便其他感興趣的朋友。

          項目組織架構(gòu)

          1. # tree

          2. .

          3. ├── LICENSE

          4. ├── pg_client

          5. │?? ├── __init__.py

          6. │?? └── pg_operator.py

          7. ├── README.md

          8. └── setup.py

          • LICENSE:可以通過github創(chuàng)建項目的時候選擇,選擇“MIT License”,后面需要添加對應(yīng)的License版本

          • README.md:項目的介紹

          • setup.py:打包時用到的元數(shù)據(jù)信息

          • pg_client: 項目主要代碼目錄,名字可以根據(jù)項目需要定義

          setup.py文件

          1. import setuptools


          2. with open("README.md", "r") as fh:

          3. long_description = fh.read()


          4. setuptools.setup(

          5. name="pypostgrestool",

          6. version="0.1",

          7. author="zhangjx",

          8. author_email="[email protected]",

          9. description="SDK about postgres",

          10. long_description=long_description,

          11. long_description_content_type="text/markdown",

          12. url="https://github.com/ThinkBlue1991/pgpool",

          13. packages=setuptools.find_packages(),

          14. install_requires=['psycopg2==2.8.5'],

          15. classifiers=[

          16. "Programming Language :: Python :: 3",

          17. "License :: OSI Approved :: MIT License",

          18. "Operating System :: OS Independent",

          19. ],

          20. )

          • name?: 軟件包的名稱。該名稱由字母,數(shù)字,_和-組成。并且不能與其他已經(jīng)上傳至pypi.org的項目相同

          • version: 軟件包的版本

          • author: 作者

          • author_email?: 作者郵箱地址

          • description?:軟件包的描述信息

          • long_description?: 軟件包的長描述信息

          • url?:軟件包的主頁鏈接,常見的github路徑較多

          • classifiers?:當(dāng)前軟件包的其他元數(shù)據(jù)信息(metadata)。例如兼容的python版本和操作系統(tǒng);提供的功能的類型及許可證等等。應(yīng)當(dāng)總是至少包括當(dāng)前軟件包所支持的python版本,操作系統(tǒng)和許可證信息

          • packages?:包含在發(fā)布軟件包文件中的可被import的python包文件。我們可以手動羅列所有文件?;蛘呤褂煤瘮?shù)setuptools.find_packages()自動包含所有的python包文件以及子包文件

          • install_requires:指定了當(dāng)前軟件包所依賴的其他python類庫。這些指定的python類庫將會在本package被安裝的時候一并被安裝

          __init__.py文件

          填寫import導(dǎo)入,這樣在安裝之后,就能夠直接通過import到自己的項目中使用,比如:

          1. # cat pg_client/__init__.py

          2. from pg_client.pg_operator importPostgresDB

          安裝完成之后,通過 frompg_clientimportPostgresDB來使用 PostgresDB這個類對象

          打包

          • 安裝打包工具

          1. pip3 install whell -y

          2. pip3 install twine -y

          • 打包

          1. python3 setup.py sdist bdist_wheel

          輸出結(jié)果

          1. # tree

          2. .

          3. ├── build

          4. │?? ├── bdist.linux-x86_64

          5. │?? └── lib

          6. │?? └── pg_client

          7. │?? ├── __init__.py

          8. │?? └── pg_operator.py

          9. ├── dist

          10. │?? ├── pypostgrestool-0.1-py3-none-any.whl

          11. │?? └── pypostgrestool-0.1.tar.gz

          12. ├── LICENSE

          13. ├── pg_client

          14. │?? ├── __init__.py

          15. │?? └── pg_operator.py

          16. ├── pypostgrestool.egg-info

          17. │?? ├── dependency_links.txt

          18. │?? ├── PKG-INFO

          19. │?? ├── SOURCES.txt

          20. │?? └── top_level.txt

          21. ├── README.md

          22. └── setup.py

          dist下的文件是需要上傳到pypi下的

          上傳pypi

          • 注冊

          通過pypi注冊頁面進行pypi用戶注冊

          • 上傳

          1. # twine upload dist/*

          2. Uploading distributions to https://upload.pypi.org/legacy/

          3. Enter your username:

          輸入用戶名和密碼就能夠上傳到pypi下。

          • 登陸到pypi查看自己的項目

          - End -


          由于微信平臺算法改版,公號內(nèi)容將不再以時間排序展示,如果大家想第一時間看到我們的推送,強烈建議星標我們和給我們多點點【在看】。星標具體步驟為:


          (1)點擊頁面最上方“小詹學(xué)Python”,進入公眾號主頁。


          (2)點擊右上角的小點點,在彈出頁面點擊“設(shè)為星標”,就可以啦。


          感謝支持,比心。


          瀏覽 46
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  国产精品久久久久久久久久久久久久久久 | 欧美另类在线观看 | 丁香亚洲婷婷 | 夜夜爽影音先锋 | 精品亚洲黄色视频 |