Python模塊制作


在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=安裝路徑

使用和其他模塊一樣就不說了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM