【2】如何發(fā)布一個(gè)模塊到PyPI分享給全世界?

1、你得新建一個(gè)模塊,其實(shí)就是新建一個(gè).py文件。但是等等,我們把這個(gè).py文件放在哪里?額……所以還是先新建一個(gè)文件夾吧,我們就用和.py文件一樣的名字,結(jié)果如下:

新建文件夾和模塊文件

2、我們?cè)谶@個(gè)wp_diveintolist.py模塊文件中隨便寫個(gè)函數(shù)吧,這個(gè)函數(shù)就是我們以后wp_diveintolist.xxx()時(shí)候的xxx。

"""
This is the wp_diveintolist module, and it provide you a function called print_lol which can print the lists that may or may not have nested list.
"""


def print_lol(custom_list):
    """
    :param custom_list:the list you wanna print
    :return:each item per line
    """
    for li in custom_list:
        if isinstance(li, list):
            print_lol(li)
        else:
            print(li)```
3、在wp_diveintolist文件夾里新建一個(gè)setup.py文件,這個(gè)文件用來記錄我們這個(gè)模塊的一些基本信息,比如名字、作者、聯(lián)系郵箱等等。

![新建setup.py文件](http://upload-images.jianshu.io/upload_images/2164666-3f476998215a4169.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

然后在setup.py中寫相關(guān)信息,這個(gè)是默認(rèn)格式,所以你照著格式把自己信息填進(jìn)去即可。

from distutils.core import setup

setup(
name='wp_diveintolist',
version='1.0.0',
py_modules='wp_diveintolist',
author='wp',
author_email='weisubao@126.com',
url='http://www.34miao.com',
description='A simple print function for nested list.',
)


4、在終端里進(jìn)入wp_diveintolist文件夾,然后用`python setup.py sdist`命令進(jìn)行構(gòu)建發(fā)布文件,大白話就是把我們的模塊整理成PyPI需要的格式,運(yùn)行這個(gè)命令后如果你也碰到和我一樣那么多not found,不要慌,一切正常。

![構(gòu)建發(fā)布文件](http://upload-images.jianshu.io/upload_images/2164666-f0f3f1100a1600c0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

5、其實(shí),構(gòu)建完文件后,我們就可以上傳到PyPI了,但是我勸你還是自己試驗(yàn)一下模塊是否運(yùn)行正常。怎么試驗(yàn)?把模塊安裝到自己電腦里然后看能不能正常導(dǎo)入使用就ok了。

6、把模塊安裝到自己電腦里。這里一定要有安裝權(quán)限,mac用戶用sudo來安裝。同樣的,一連串的not found不影響。

![安裝模塊到自己電腦里](http://upload-images.jianshu.io/upload_images/2164666-96e1bb75ee91762f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

7、試一下是否可用,導(dǎo)入正常,使用也正常,OK了。

![測(cè)試模塊是否可用](http://upload-images.jianshu.io/upload_images/2164666-7e48b89b918d399c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

8、上傳到PyPI。我們?cè)诤?jiǎn)書發(fā)布文章,是要登錄后才能發(fā)布的,如你所知,上傳到PyPI,也需要登錄。注冊(cè)一個(gè)PyPI賬號(hào),然后登錄這個(gè)賬號(hào),上傳我們的模塊,這就是我們的大概步驟。

9、注冊(cè)PyPI,這里友情提示一下不要用163或者126的郵箱,因?yàn)榻?jīng)常收不到驗(yàn)證郵件,不驗(yàn)證的話賬號(hào)是不能用的,建議使用gmail郵箱。

10、有了賬號(hào)后,你可以登錄PyPI網(wǎng)站,有一個(gè)上傳頁面,就是你填寫一大堆信息然后上傳一個(gè)文件包,點(diǎn)擊提交的那種。但是……能用兩行代碼搞定的事情為毛要填一大堆東西呢。

11、我們?nèi)匀辉诮K端來操作,我們得先在終端登錄PyPI,使用`python setup.py register`,選擇`1、使用現(xiàn)成的用戶名密碼登錄`,然后按照提示輸入用戶名和密碼,哎……呀……我去……什么叫500錯(cuò)誤,500錯(cuò)誤是服務(wù)器端的錯(cuò)誤,那也就是說不是我的錯(cuò)嘍,一定是PyPI服務(wù)器有問題,一定是他們有問題,我才沒問題呢,是他們,是……他……們,那怎么辦,怎么辦,他們修復(fù)服務(wù)器不是一時(shí)半伙就能修復(fù)好了的,而且有可能這個(gè)問題已經(jīng)存在好久了,好幾個(gè)月了,一直沒人修復(fù),那么也就意味著我今天、明天、后天都不能上傳了,我天啊,我怎么辦啊,我做了那么多工作,就剩最后兩步了啊,我……天……啊。這就是樓主當(dāng)時(shí)的內(nèi)心OS啊。

![登錄PyPI出錯(cuò)](http://upload-images.jianshu.io/upload_images/2164666-8a361456854c34d3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

12、別慌,再試幾次,有可能是網(wǎng)速什么的原因,訪問國(guó)外網(wǎng)站么,你懂得。摔……仍然是同樣的錯(cuò)誤啊??磥碜⒍ń裉焱瓴怀闪嗣?。

13、然后樓主開始各種搜索,在stackoverflow上看到了幾個(gè)回答,但是貌似不管用啊,而且stackoverflow打開好慢啊,逼得樓主不得不打開fanqiang軟件??戳藥讉€(gè)答案依然不行啊。

14、怎么辦?再試一次?好,最后一次了,不行就只能放棄。啪……啪……啪……成功了。怎么回事?難道是我剛剛打開了fanqiang軟件么,是的,真的是這個(gè)原因,我去。

![登錄PyPI成功](http://upload-images.jianshu.io/upload_images/2164666-7d5b4847f6d7c927.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

15、既然已經(jīng)登錄上了,那么我們就剩下最后一步了——上傳,好雞凍啊。使用`python setup.py sdist upload`,結(jié)果顯示`OK`。注意:如果你也是用的wp_diveintolist模塊名,那上傳肯定是出錯(cuò)的,因?yàn)镻yPI不能有同名的模塊存在,除非我從PyPI網(wǎng)站上刪除這個(gè)模塊,或者你只能用其他名字。

![上傳成功](http://upload-images.jianshu.io/upload_images/2164666-7c3702ccd2e58741.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

16、成功了,真的成功了……慢著,上傳到PyPI了?我們瞅瞅去。真的成功了。

![已經(jīng)在PyPI網(wǎng)站](http://upload-images.jianshu.io/upload_images/2164666-e06288d25382023b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

17、我是不是應(yīng)該推薦一個(gè)fanqiang軟件?你問為什么?因?yàn)檫@TM太像一篇軟文了啊,但并不是。再見!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,415評(píng)論 22 257
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,113評(píng)論 25 709
  • 焦慮其實(shí)并不全是壞事,如果你能勇敢正視它的話。 心中有焦慮,是因?yàn)橛兴诖?,期待自己表現(xiàn)良好,期待事情順利發(fā)展,期...
    大海藍(lán)藍(lán)_e063閱讀 418評(píng)論 0 0
  • 你跟我說 你不要活了 流傳的故事中有你的一把匕首 那是用來催人性命 你說你已死了千千萬萬回 只這一次你想乖乖順順 ...
    柳橙芝閱讀 351評(píng)論 0 10
  • 一朵花,如果不妖艷、不凌冽、不雍容,不低賤,人們說——“恰好”。 一棵樹,如若花苞與盛開狀態(tài)共存,都不多不少,他們...
    未分岔的時(shí)光閱讀 385評(píng)論 0 1

友情鏈接更多精彩內(nèi)容