如何发布自定义的python模块

php开发中,咱们定义好了一个公用函数,则会将代码放在公用的文件中,须要用到的时候,使用require或者include函数包含这个公用的文件,便可在程序中实现可重用。接下来看看python中如何操做 php

系统环境:window xp sp3,python2.7 python

在D盘pydemo目录下建立一个nester目录(此目录为举例说明,属自定义) windows

在目录中添加两个python程序文件:nester.py和setup.py 数组

nester.py 模块的程序文件,代码以下(实现递归遍历数组): python2.7

def print_lol(arr):
	for row in arr:
		if(isinstance(row , list)):
			print_lol(row)
		else:
			print row

setup.py 保存模块的安装信息,包含模块名称,模块开发者等信息,代码以下: 函数

from distutils.core import setup

setup (
	name = 'nester',
	version = '1.0.1',
	py_modules = ['nester'],
	author = 'ken.wong',
	author_email = '279639439@qq.com',
	description = 'Module demo',
)
注意:

name和py_modules这两个参数必定要与nester.py文件名相同,不然发布安装时会发出模块文件找不到的错误 ui

经过命令行,进入nester目录(D:/pydemo/nester),依次输入下图中红色框的命令 spa

发布模块,但还不能在程序中被调用,还须要安装,接着看 命令行

See,安装完成,在python环境下产生一个nester-1.0.1-py2.7.egg-info文件,有点相似php扩展的.dll(windows环境下的) code

如今能够在程序中使用刚才安装的nester模块

import nester

movies = ['a','b',['c1','c2']]

nester.print_lol(movies)
这里须要注意一个问题,不少新手会这样调用:
print_lol(movies)
系统会发出这样的一个错误信息:NameError: name 'print_lol' is not defined

缘由是当模块建立之后,系统自动建立一个与模块名称相同的命名空间(nester),并将函数放在命名空间中,简单的经过print_lol调用,天然没法找到函数,正确的方法:

nester.print_lol(movies)
直接把命名空间带上便可。
相关文章
相关标签/搜索