(六)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代码的文本文件,对模块的主要需求就是要求文件名以.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动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法