设为首页 加入收藏

TOP

如何发布自定义的Python模块
2014-11-24 02:57:59 来源: 作者: 【 】 浏览:1
Tags:如何 发布 定义 Python 模块

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


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


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


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


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


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文件名相同,否则发布安装时会发出模块文件找不到的错误


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



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



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


现在可以在程序中使用刚才安装的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)


直接把命名空间带上即可。


推荐阅读


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux Bash Shell入门教程 下一篇Python文件处理:读取文件

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: