標籤:python import 第三方模組 setup.py
系統:CentOS6.8 python版本:python3.5
文字編輯器:vim
python中我們很多時候,需要將自己的py檔案匯入到python路徑中,但是我們自己的檔案自身並不在python預設的庫檔案路徑下,這時候就需要我們自己將我們的py檔案import進入了
下面樣本怎麼匯入自己的第三方模組,我們首先需要自己建立一個.py檔案,名字隨意明名了,但是不要和python內部模組重命,內部模組路徑在/usr/lib/python3.5/site-packages。要不然使用python提供的一些模組的方法時就悲劇了。
我們寫代碼看看一個列表是否是含有列表嵌套,如果有嵌套,就拆開輸出,環境python3,命名為liname.py
#!/usr/bin/env python3
def print_list(the_list): 傳出一個列表參數 for item in the_list: 挨個遍曆列表元素 if isinstance(item,list): 判斷每個元素是否為列表 print_list(item) 調用自身做 else: print(item)
我們想要將這個.py檔案變成一個模組,我們可以使用Python包索引(Python Package Index,PyPI)這 樣一個互連網中第三庫的集中管理,我們首先建立一個目錄,名字還是隨意啊,比如就叫dog
在這個目錄中建立一個名字為setup.py的檔案,檔案內容如下所示:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/89/E6/wKiom1ggw67ThVQNAAA2f4wO3PU932.png" title="捕獲5.PNG" alt="wKiom1ggw67ThVQNAAA2f4wO3PU932.png" />
現在dog這個目錄中已經包含了兩個檔案setup.py和lsname.py這個檔案,我們在終端中輸入命令: python3 setup.py sdist ,然後目錄下會多出幾個檔案和目錄,
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/89/E3/wKioL1ggxJrhQ333AABZs6sWCz8636.png" title="捕獲7.PNG" alt="wKioL1ggxJrhQ333AABZs6sWCz8636.png" /> 然後我們使用命令: python3 setup.py install 安裝
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/89/E6/wKiom1ggxOrA5WWtAAAz4r9tK4s494.png" title="捕獲8.PNG" alt="wKiom1ggxOrA5WWtAAAz4r9tK4s494.png" />
然後我們再python3的互動式命令列下匯入模組,輸入一個列表,然後調用,會觸發下列異常
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/89/E3/wKioL1ggxiuwawmnAAAriK1ST08121.png" title="捕獲9.PNG" alt="wKioL1ggxiuwawmnAAAriK1ST08121.png" />
這是因為我們的python的主程式中的代碼模組與一個名為__main__的命名空間關聯,將代碼放在其單獨的模組中時,python會自動建立與模組同名的命名空間。因此我們的模組中的代碼會與一個名為liname的命名空間關聯
我們剛進入到python的互動式命令列的時候是和__main__這個命名空間相關聯的,我們想要使用liname這個空間的print_list方法時不能單純的使用這個函數,而需要這樣使用liname.print_list()這樣子使用,比如:
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/89/E3/wKioL1ggzS3AkLS1AAAV1rZayNs417.png" title="捕獲10.PNG" alt="wKioL1ggzS3AkLS1AAAV1rZayNs417.png" />
這樣子就完全沒有問題了。
如果我們自己本身寫了一段很好的代碼,想將它貢獻出去,除了github外,我們可以放在pypi這個網站上,也就是我們使用pip或者easy_install這樣的命令安裝
我們先在PyPI網站上(http://pypi.python.org/),來註冊我們的資訊
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/89/E6/wKiom1ggzlmA3850AAAsfvM1YUM696.png" title="捕獲11.PNG" alt="wKiom1ggzlmA3850AAAsfvM1YUM696.png" />
註冊完成後我們就開始向PyPI上傳我們的代碼,上傳時我們要知道我們註冊時的帳號和密碼,因為接下來會用到 650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/89/E3/wKioL1ggzwjAXXW1AAA1M2VV-sM013.png" title="捕獲12.PNG" alt="wKioL1ggzwjAXXW1AAA1M2VV-sM013.png" />
因為我沒什麼好的代碼貢獻所以,後面的步驟略去,進行完了這些步驟,我們就可以上傳了,
我們使用命令:python3 setup.py upload
至此我們自己寫的代碼就貢獻給了PyPI社區,別人如果想要安裝我們這個模組,就可以通過pip或者easy_install這種方式來安裝我們的模組了
本文出自 “berniem2m” 部落格,請務必保留此出處http://berniem2m.blog.51cto.com/9203249/1870497
python中如何使用pip安裝自己的第三方模組