abstract: 系統(tǒng):CentOS6.8 python版本:python3.5 文本編輯器:vim python中我們很多時(shí)候,需要將自己的py文件導(dǎo)入到python路徑中,但是我們自己的文件自身并不在python默認(rèn)的庫文件路徑下,這時(shí)候就需要我們自己將我們的py文件import進(jìn)入了 &
系統(tǒng):CentOS6.8 python版本:python3.5
文本編輯器:vim
python中我們很多時(shí)候,需要將自己的py文件導(dǎo)入到python路徑中,但是我們自己的文件自身并不在python默認(rèn)的庫文件路徑下,這時(shí)候就需要我們自己將我們的py文件import進(jìn)入了
下面示例怎么導(dǎo)入自己的第三方模塊,我們首先需要自己創(chuàng)建一個(gè).py文件,名字隨意明名了,但是不要和python內(nèi)部模塊重命,內(nèi)部模塊路徑在/usr/lib/python3.5/site-packages。要不然使用python提供的一些模塊的方法時(shí)就悲劇了。
我們寫代碼看看一個(gè)列表是否是含有列表嵌套,如果有嵌套,就拆開輸出,環(huán)境python3,命名為liname.py
#!/usr/bin/env python3
def print_list(the_list): 傳出一個(gè)列表參數(shù)
for item in the_list: 挨個(gè)遍歷列表元素
if isinstance(item,list): 判斷每個(gè)元素是否為列表
print_list(item) 調(diào)用自身做
else:
print(item)
我們想要將這個(gè).py文件變成一個(gè)模塊,我們可以使用Python包索引(Python Package Index,PyPI)這 樣一個(gè)互聯(lián)網(wǎng)中第三庫的集中管理,我們首先創(chuàng)建一個(gè)目錄,名字還是隨意啊,比如就叫dog
在這個(gè)目錄中創(chuàng)建一個(gè)名字為setup.py的文件,文件內(nèi)容如下所示:
現(xiàn)在dog這個(gè)目錄中已經(jīng)包含了兩個(gè)文件setup.py和lsname.py這個(gè)文件,我們?cè)诮K端中輸入命令:
python3 setup.py sdist ,然后目錄下會(huì)多出幾個(gè)文件和目錄,如圖所示
然后我們使用命令: python3 setup.py install 安裝
然后我們?cè)賞ython3的交互式命令行下導(dǎo)入模塊,輸入一個(gè)列表,然后調(diào)用,會(huì)觸發(fā)下列異常
這是因?yàn)槲覀兊膒ython的主程序中的代碼模塊與一個(gè)名為__main__的命名空間關(guān)聯(lián),將代碼放在其單獨(dú)的模塊中時(shí),python會(huì)自動(dòng)創(chuàng)建與模塊同名的命名空間。因此我們的模塊中的代碼會(huì)與一個(gè)名為liname的命名空間關(guān)聯(lián)
我們剛進(jìn)入到python的交互式命令行的時(shí)候是和__main__這個(gè)命名空間相關(guān)聯(lián)的,我們想要使用liname這個(gè)空間的print_list方法時(shí)不能單純的使用這個(gè)函數(shù),而需要這樣使用liname.print_list()這樣子使用,比如:
這樣子就完全沒有問題了。
如果我們自己本身寫了一段很好的代碼,想將它貢獻(xiàn)出去,除了github外,我們可以放在pypi這個(gè)網(wǎng)站上,也就是我們使用pip或者easy_install這樣的命令安裝
我們先在PyPI網(wǎng)站上(http://pypi.python.org/),來注冊(cè)我們的信息
注冊(cè)完成后我們就開始向PyPI上傳我們的代碼,上傳時(shí)我們要知道我們注冊(cè)時(shí)的賬號(hào)和密碼,因?yàn)榻酉聛頃?huì)用到
因?yàn)槲覜]什么好的代碼貢獻(xiàn)所以,后面的步驟略去,進(jìn)行完了這些步驟,我們就可以上傳了,
我們使用命令:python3 setup.py upload
至此我們自己寫的代碼就貢獻(xiàn)給了PyPI社區(qū),別人如果想要安裝我們這個(gè)模塊,就可以通過pip或者easy_install這種方式來安裝我們的模塊了