1.模块代码放在nester.py中。模块有关的元数据放在setup.py中。
nester.py
"""这是nester.py模块,提供一个名为pint_lol()的函数,这个函数的作用是打印列表。这个列表中可以嵌入列表,也可以没有"""
def print_lol(the_list):
for element in the_list:
if isinstance(element ,list):
print_lol(element)
else:
print(element)
setup.py
from distutils.core import setup
setup(
name = 'nester',
version = '1.0.0',
py_modules= ['nester'],
author = 'zxm',
author_email = 'emon0408@163.com',
url = 'http://blog.csdn.net/zhang_xiaomeng',
description = 'A simple printer of nested lists',
)
2.构建一个发布文件
windows下,打开cmd,转到nester.py的文件夹下:
输入命令:“D:\Program Files\Python\python.exe” setup.py sdist
注意:为什么在python.exe的路径上加引号呢?因为路径中有空格。
3.将发布安装到Python本地副本中。
输入命令:“D:\Program Files\Python\python.exe” setup.py install
3.导入模块并使用
import nester
cast = ['Plain','Cleese','Idle']
nester.print_lol(cast)
Python中的所有代码都与一个命名空间关联。主Python(以及IDLE shell中)的代码与一个名为_main_的命名空间关联。将代码放在其单独的模块中时,Python会自动创建一个与模块同名的命名空间。所以,你的模块中的代码会与一个名为nester的命名空间关联。就像人的姓氏一样。
命名空间限定的格式如下:
首先是模块名,然后是一个点号,再后面是函数名。
如果使用from nester import print_lol,会把指定的函数(这里就是print_lol)增加到当前命名空间中,这样一来,就不必再使用命名空间限定。
注意:如果你的当前命名空间中已经定义了一个名为print_lol的函数,这个特定import语句会用导入的函数覆盖你自己定义的函数,而这可能并不是你原来期望的行为。