在当前目录新建一个名为ma.py的文件
定义一个计算阶乘的fact函数
###### ma.py ######
def fact(a):
ans=1
for i in range(1,a+1):
ans*=i
return ans
if __name__=='__main__': # __name__是python提供的模块属性
print("This is itself") # __name__!='__main__'是被引用
然后引用ma模块里的fact函数
from ma import fact
print(fact(5))
包下的__init__.py文件内容可以为空,包内通常有多个模块。
在当前目录创建一个名为ms的文件夹,一个计算前n项和的mb.py文件
###### mb.py ######
def sum(a):
ans=0
for i in range(1,a+1):
ans+=i
return ans
if __name__=='__main__':
print("it is itself")
将ma.py和mb.py移动到ms文件夹内
在ms文件夹内新建一个名为__init__.py的空文件。
引入ms包内的ma和mb模块
from ms import ma
import ms.mb
print(ma.fact(5))
print(mb.fact(5))
若ma模块想要应用另一个mx包内的mc模块
则需要在__init.py文件加入以下代码,同时在ma.py文件中引入init __.py模块
###### __init__.py ######
import sys
sys.path.append('../')
在ms包的同目录下新建mx文件夹
在mx文件夹中新建__init__.py空文件和算前n项积的mc.py文件
###### mc.py ######
def fact(a):
ans=1
for i in range(1,a+1):
ans*=i
return ans
if __name__=='__main__':
print("it is itself")
修改ma.py文件,引入__init__.py模块()和mc模块,将fact函数改成前n项之积与阶乘的积
###### ma.py ######
import __init__
from mx import mc
def fact(a):
ans=mc.fact(a)
for i in range(1,a+1):
ans*=i
return ans
if __name__=='__main__':
print("it is itself")
模块发布:将包与setyp.py文件放在同个目录,打包压缩。setup.py文件包含着各种信息(注意逗号,及使用双引号)
#coding=utf-8
from distutils.core import setup
setup(
name = "mmm",
author = "Grof",
version = "1.0",
py_modules = ['ms.ma','ms.mb','mx.mc']
)
在命令行窗口当前路径下使用bulid命令构建模块,命令完成后会生成一个build文件夹,bulid的子目录lib下是待发布的模块备份
python setup.py build
使用sdist压缩,命令结束后会生成一个dist文件夹和MANIFEST文件
python setup.py sdist
MANIFEST文件包含发布中的文件列表,dist目录下就是待发布的压缩包了
模块安装只需找到这个 mmm.tar.gz压缩包解压,执行install命令完成安装
python setup.py install