对于已经做好的函数,可以将函数定义在一个.py文件内,并将安装信息写入到setup.py文件内,比如:
首先命名一个文件夹nester并将函数文件nester.py和setup.py放在文件内
nester.py 定义了一个迭代写list内容的函数:
"""This is neil's first lists print"""
def print_lol(the_list,flag=True,level=0):
"""the_list is any Python list"""
for each_item in the_list:
if(isinstance(each_item,list)):
print_lol(each_item,flag,level+1)
else:
if flag:
for tab_depth in range(level):
print("\t",end='')
print(each_item)
setup.py为安装信息:
from distutils.core import setup
setup(
name = 'nester',
version = '1.2.0',
py_modules = ['nester'],
author = 'neil',
author_email= 'gjy2014@126.com',
description = 'A simple printer of nested lists',
)
文件都放置好后,在nester文件夹下利用命令C:\Python33\python.exe setup.py sdist(这里是windows环境)来构建发布文件
running sdist
running check
warning: check: missing required meta-data: url
warning: sdist: manifest template 'MANIFEST.in' does not exist (using default fi
le list)
warning: sdist: standard file not found: should have one of README, README.txt
writing manifest file 'MANIFEST'
creating nester-1.2.0
making hard links in nester-1.2.0...
hard linking nester.py -> nester-1.2.0
hard linking setup.py -> nester-1.2.0
creating 'dist\nester-1.2.0.zip' and adding 'nester-1.2.0' to it
adding 'nester-1.2.0\nester.py'
adding 'nester-1.2.0\PKG-INFO'
adding 'nester-1.2.0\setup.py'
然后将发布文件安装到本地副本中,经过这个过程就可以import 命名空间直接调用已经安装好的函数:命令为C:\Python33\python.exe setup.py install,会产生如下信息
running install
running build
running build_py
copying nester.py -> build\lib
running install_lib
copying build\lib\nester.py -> C:\Python33\Lib\site-packages
byte-compiling C:\Python33\Lib\site-packages\nester.py to nester.cpython-33.pyc
running install_egg_info
Removing C:\Python33\Lib\site-packages\nester-1.2.0-py3.3.egg-info
Writing C:\Python33\Lib\site-packages\nester-1.2.0-py3.3.egg-info
这样在Python shell IDLE模式下测试下:
>>> import nester
>>> test = ["a",["b","c"]]
>>> nester.print_lol(test)
a
b
c
>>> nester.print_lol(test,False)
a
b
c
这里要注意的是,如果要是改动了函数内容,需要重新sdist 和install 并且要重新打开shell 进行import才会得到改变的结果