Python模块制作

时间:2023-12-09 16:56:01

在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=安装路径

使用和其他模块一样就不说了