手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

如何发布自定义的Python模块

[日期:2013-08-10] 来源:oschina.net  作者:haigou20 [字体: ]

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)

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

推荐阅读

Python之Matplotlib画图方法 http://www.linuxidc.com/Linux/2012-05/61400.htm

Python:使用matplotlib绘制图表 http://www.linuxidc.com/Linux/2012-02/55296.htm

linux
相关资讯       Python模块 
本文评论   查看全部评论 (1)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 1 楼
* 匿名 发表于 2013/10/11 11:35:29
linux咋导入啊,都在说windows