您的位置:首页 > 编程语言 > Python开发

(六)python共享代码步骤

2015-09-04 17:44 681 查看
通过作为python模块共享代码,就可以向整个python社区开发你的代码。在这一章中将学习如何创建、安装和发布你自己的可共享模块,然后把模块加载到Web上的python软件共享网站。

 

(一)函数转换为模块

模块就是一个包含python代码的文本文件,对模块的主要需求就是要求文件名以.py结尾,这是python扩展名,要把函数转换为一个模块,需要把代码保存到一个适当命名的文件中。

Python标准库里已经预加载了大量模块,而且他们已经在你的计算机上了;如果标准库里没有你要的模块,可以去PyPI上看一下:https://pypi.python.org/pypi。Python包索引(pythonpackage index,PyPI)为Internet上的第三方python模块提供了一个集中的存储库。

 

(二)注释代码

在python中,可以使用一个三重引号来建立多行注释



在保存模块之后,只需要创建列表,然后对列表调用函数即可:

>>> movies=['The HolyGrail',1975,'Terry Jones & Terry Gilliam',91,

            ['Graham Chapman',['Michael Palin','JohnCleese',

                                  'Terry Gilliam','Eric Idle','Terry Jones']]]

>>> print_lol(movies)

The Holy Grail

1975

Terry Jones & Terry Gilliam

91

Graham Chapman

Michael Palin

John Cleese

Terry Gilliam

Eric Idle

Terry Jones

>>> 

注意:

1、  在idle提示窗口输入importsys; sys.path(都放在一行上),输出一个位置列表,python解释器就在这个位置上搜索模块;

2、  模块放到哪里对现在来说没有任何影响向,稍后将把这个模块安装到你的python本地副本,这样解释器就可以找到它,而无需记住它具体放在哪里;

3、  三重引号(可单可双)引起的字符串没有赋给一个变量,就会被作为一个注释;

4、  如果一行中任意位置加了一个“#”号,从这一点指导当前行末尾的所有内容都是注释。

(三)准备发布

1、  为模块创建一个文件夹,创建文件夹后,将nester.py模块文件复制到这个文件夹中;

2、  在新文件夹中创建一个名为“setup.py”的文件,这个文件包含有关发布的原数据,编辑文件,增加下面代码

from distutils.core import setup

setup(

      name       =’nester’,

      version      =’1.0.0’,

      py_module s  =[‘nester’],

      author      =’sara’,

      author_email =’cyjia1022@126.com’,

      url         =’ http://blog.csdn.net/sarafd’
     description  =’A simple printer ofnested lists’,

     )

3、  构建一个发布文件,发布工具包含有构建一个发布所需的所有功能,在nester文件夹中打开一个终端窗口,输入一行命令:python setup.py sdist

注:

在文件夹中打开终端窗口,可以按shift,然后点击右键,点击“在此处打开命令窗口”

如果输入命令后显示“python3不是内部或外部命令”,解决方法:

 http://jingyan.baidu.com/article/ceb9fb10db2fc68cac2ba04e.html

4、  将发布安装到你的python本地副本中,仍然在终端窗口,键入以下命令: python setup.py install

此时发布已准备就绪。

 

(四)发布预览

利用python的发布工具,你的模块已经转换为一个发布,并且安装在你的python本地副本上。

开始时只有一个函数,这个函数输入一个名为nester.py的文件中,这就创建了一个模块,然后创建一个名为nester的文件存放这个模块,通过在这个文件夹中增加一个名为setup.py的文件,从而能够构建和安装你的发布,这会生成一组额外的文件,并在nester文件夹中出现两个新的文件夹,这些文件和文件夹都是由发布工具为你创建的。

安装前:nester文件夹中有nester.py(代码),setup.py(元数据);

安装后:nester文件夹中有manifest(发布中的文件列表),bulld文件夹(里面有lib文件夹,lib文件夹下有nester.py文件(含代码)),dist文件夹(含nester-1.0.0.tar.gz(发布包)),nester.py(代码),nester.pyc(编译版本的代码),setup.py(元数据)。

 

 

(五)导入模块并使用

要使用一个模块,只需要把它导入到你的程序中,或者导入到IDLE shell:

     Importnester

 

例:导入新建的模块地,并定义一个小列表,名为“cast”,然后使用模块提供的函数在屏幕上显示这个列表的内容,列表数据为Palin, Cleese, Idle, Jones, Gilliam, Chapman.

import nester

cast=['Palin','Cleese','Idle','Jones','Gilliam','Chapman'];

print_lol(cast)

 

这时,IDLE会报错:

Traceback (most recent call last):

 File "<pyshell#2>", line 1, in <module>

   print_lol(cast)

NameError: name 'print_lol' is not defined

 

原因是print_lol函数应该是在nester这个模块中,所以需要进行限定,格式:模块名.函数名:

nester.print_lol(cast)

 

这时输出:

Palin

Cleese

Idle

Jones

Gilliam

Chapman

 

其实,还有一种方式:from nester importprint_lol ; 会把指定的函数(这里是print_lol)增加到当前命名空间中,这样就不必在使用命名空间限定了,不过需要注意,如果当前的命名空间中已经定义了一个名为print_lol的函数,这个特定import语句会用导入的函数覆盖之前的函数,所以不推荐这样做。

 

可是,问题来了,输出的东西并不属于一个级别,如何区分它们的级别呢?请看下一节~

 

这里省略掉在PyPI社区注册和分享的过程,之后会补上哒~

 

注意:

1、  在IDLE编辑窗口中按F5,代码会由Python执行,这样方便测试,不过要想在IDLE之外使用模块的功能,仍需要先导入模块;

2、  发布工具创建了一个名为nester.pyc的文件,因为解释其第一次执行模块代码时,它会读入代码,并转换为一种中间字节码格式,也是最终执行的,这样可以让程序运行的更快,但是不能只向用户提供pyc文件,因为pyc文件主要是解释其完成一个运行时的优化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python