就在剛剛我把我寫的小專案發到 PYPI 套件管理系統中心了!! (ノ>ω<)ノ
因為研究了一陣子,所以就上來寫一下筆記,用自己的語言紀錄一下以免下次忘記中間的細節。
所以接下來我分三大步驟說明:
- 申請帳號
- 設定 setup 相關文件
- 上傳至PYPI
申請帳號:
當然阿!想要上傳就一定要先有帳號嘛!
第一步驟當然就是上 PYPI 註冊囉!

註冊需要的資料不多,大概就只有帳號密碼和信箱而已!
註冊好之後記得要去信箱認證喔!
不然會不給你上傳套件的!
設定 setup 相關文件:
接下來就是要在你的套件中設定上傳的資訊了!
這部份很麻煩要注意好喔!!
總共有個檔案要設定,就是下面這幾個:
- setup.py
- setup.cfg
- .pypirc
- 你的套件
下面這張圖就是我上傳的套件的架構
#btw 我的小專案就是 ascii_image這個套件啦
#他的功能就是把輸入的圖片用 ascii_art的方式輸出!XD
#好玩的小專案而已XD
#pip install ascii_image

setup.cfg:
先從這個開始介紹吧!
因為這個檔案就是單純的設定檔,所以在簡單的套件中我們就設定 描述檔就好了!
[metadata]
description-file = README.md
.pypirc
這個檔案可以設定如何在上傳時登入我們想要登入的套件管理系統
所以在這個檔案裡面設定我們要登入的套件管理系統名稱、帳號、密碼等等
範例在下面!
將這些打進檔案裡面就好了!
[distutils]
index-servers =
pypi
[pypi]
username: 【你的帳號】
password: 【你的密碼】
setup.py
這邊設定最多了!
不過想要單純上傳不管其他設定的話其實很快的呢~
先上範例!
from setuptools import setup
setup(
name='ascii_image',
version='1.0',
description='Make any image file to ascii art format.',
url='https://github.com/Henry0526/ascii_image',
author=【作者姓名】,
author_email=【你的信箱】,
install_requires=["numpy", "pillow"],
license='MIT',
packages=['ascii_image'],
zip_safe=False,
keywords=['ASCII-art', "image", "ascii"],
classifiers=[
'Development Status :: 5 - Production/Stable',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
]
)
在這裡面我們會用到 steuptools 這個內建的套件
我們一一解釋每個參數吧!
參數名稱 | 解釋 |
---|---|
name | 這就是上傳後供別人下載時的名稱。注意這邊盡量不要用到 「-」 喔 !!不然會造成程式上import錯誤的! |
version | 版本號,之後更新套件時就要增加這邊的版本號才可以上傳 |
url | 別人可以去哪裡看這套件的網址 |
author | 作者名稱 |
author_email | 作者信箱 |
install_requires | 你的套件相依套件有哪些? |
license | 使用規範!這個很重要!定義了開源的世界規則!!有機會的話我會寫一篇講解各種規範的,這邊先用很廣用的MIT規範。 |
packages | 要上傳的是哪一個套件,因為我先打包成一個module放在資料夾中,所以我就寫那個module的名稱就好了。 |
zip_safe | 很深層的影響(茶~)記得這樣做會讓套件被import的速度增加! |
keywords | 搜尋關鍵字 很字面上的意思XD |
classifiers | 這是固定的格式寫法,幫助PYPI更好的整理大家的套件喔! |
上傳至PYPI:
很好很好!到這邊大家應該都做好準備了吧!
接下來這步驟很厲害!
也非常重要!!!
大家要注意跟上喔!!!!
python setup.py sdist upload
大功告成!XD
sdist 代表 Source Distributions(sdist) 就是原始碼包的意思!
這段跑完沒有錯的話就可以去 PYPI 搜尋自己的套件啦!
恭喜恭喜~
結尾:
到這邊大家應該都已經上傳自己的套件了吧~
如果成功的話,大家可以在下面留言自己的套件網址跟大家分享一下~
沒有的話,如果有遇到任何問題都可以在下方留言討論喔!
那這篇就到這邊啦!
我們下一篇再見囉~~
ㄅㄅ~