在Python中,每個Python文件都可以作為一個模塊,模塊的名字就是文件的名字。
定義自己的模塊
比如有這樣一個文件test.py,在test.py中定義了函數add
def add(a,b):
return a+b
調用自己定義的模塊
在其他文件中就可以先import test,然后通過test.add(a,b)來調用了,當然也可以通過from test import add來引入
#fileName:main.py
import test
result = test.add(11,22)
print(result)
測試模塊
在實際開中,當一個開發人員編寫完一個模塊后,為了讓模塊能夠在項目中達到想要的效果,這個開發人員會自行在py文件中添加一些測試信息,例如:
#fileName:test.py
def add(a,b):
return a+b
if __name__ == '__main__': # 用來進行測試
ret = add(12,22)
print('int test.py file,,,,12+22=%d'%ret)
如果此時,在其他py文件中引入了此文件的話,想想看,測試的那段代碼是否也會執行呢!
#fileName:main.py
import test
result = test.add(11,22)
print(result)
模塊發布
上面的都是簡單的例子,學會了模塊的制作后下來就是發布了,下面就是例子
mymodule目錄結構體如下:
.
├── setup.py
├── suba
│ ├── aa.py
│ ├── bb.py
│ └── __init__.py
└── subb
├── cc.py
├── dd.py
└── __init__.py
編輯setup.py文件
py_modules需指明所需包含的py文件
from distutils.core import setup
setup(name="ylg", version="1.0", description="ylg's module", author="ylg", py_modules=['suba.aa', 'suba.bb', 'subb.cc', 'subb.dd'])
構建模塊
執行(window和linux一樣)
python setup.py build
構建后目錄結構
.
├── build
│ └── lib.linux-i686-2.7
│ ├── suba
│ │ ├── aa.py
│ │ ├── bb.py
│ │ └── __init__.py
│ └── subb
│ ├── cc.py
│ ├── dd.py
│ └── __init__.py
├── setup.py
├── suba
│ ├── aa.py
│ ├── bb.py
│ └── __init__.py
└── subb
├── cc.py
├── dd.py
└── __init__.py
生成發布壓縮包
打包后,生成最終發布壓縮包ylg-1.0.tar.gz , 目錄結構
Windows也可以用壓縮軟件壓縮
.
├── build
│ └── lib.linux-i686-2.7
│ ├── suba
│ │ ├── aa.py
│ │ ├── bb.py
│ │ └── __init__.py
│ └── subb
│ ├── cc.py
│ ├── dd.py
│ └── __init__.py
├── dist
│ └── ylg-1.0.tar.gz
├── MANIFEST
├── setup.py
├── suba
│ ├── aa.py
│ ├── bb.py
│ └── __init__.py
└── subb
├── cc.py
├── dd.py
└── __init__.py
模塊安裝、使用
- 找到模塊的壓縮包
- 解壓
- 進入文件夾
- 執行命令python setup.py install
注:如果在install的時候,執行目錄安裝,可以使用python setup.py install --prefix=安裝路徑
使用和其他模塊一樣就不說了