歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 如何發布自定義的Python模塊

如何發布自定義的Python模塊

日期:2017/3/1 9:54:28   编辑:Linux編程

php開發中,我們定義好了一個公用函數,則會將代碼放在公用的文件中,需要用到的時候,使用require或者include函數包含這個公用的文件,即可在程序中實現可重用。接下來看看python中如何操作

系統環境:window xp sp3,python2.7

在D盤pydemo目錄下創建一個nester目錄(此目錄為舉例說明,屬自定義)

在目錄中添加兩個python程序文件:nester.py和setup.py

nester.py 模塊的程序文件,代碼如下(實現遞歸遍歷數組):

def print_lol(arr):
for row in arr:
if(isinstance(row , list)):
print_lol(row)
else:
print row

setup.py 保存模塊的安裝信息,包含模塊名稱,模塊開發者等信息,代碼如下:

from distutils.core import setup

setup (
name = 'nester',
version = '1.0.1',
py_modules = ['nester'],
author = 'ken.wong',
author_email = '[email protected]',
description = 'Module demo',
)

注意:

name和py_modules這兩個參數一定要與nester.py文件名相同,否則發布安裝時會發出模塊文件找不到的錯誤

通過命令行,進入nester目錄(D:/pydemo/nester),依次輸入下圖中紅色框的命令

發布模塊,但還不能在程序中被調用,還需要安裝,接著看

See,安裝完成,在python環境下產生一個nester-1.0.1-py2.7.egg-info文件,有點類似php擴展的.dll(windows環境下的)

現在可以在程序中使用剛才安裝的nester模塊

import nester

movies = ['a','b',['c1','c2']]

nester.print_lol(movies)

這裡需要注意一個問題,很多新手會這樣調用:

print_lol(movies)

系統會發出這樣的一個錯誤信息:NameError: name 'print_lol' is not defined

原因是當模塊創建以後,系統自動創建一個與模塊名稱相同的命名空間(nester),並將函數放在命名空間中,簡單的通過print_lol調用,自然無法找到函數,正確的方法:

nester.print_lol(movies)

直接把命名空間帶上即可。

Copyright © Linux教程網 All Rights Reserved