python构建与安装模块
将我们日常中编写的函数封装转化为模块以后,可以更好地使用和分享,这样也可以更好地增加自己编写python程序的信心!所以,今天学习了如何将之前编写的程序顺利的转成模块,并且使用各种DOS命令和Python Shell命令来完成相应的操作,然后进行发布。
首先学习了如何将之前写的一个如下的函数,封装成模块:
"""包含一个函数print_lol(the_list),来解决相关问题"""
def print_lol(the_list):
"""本文件主要用来解决列出列表(包括嵌套列表)"""
for each_itemin the_list:
if isinstance(each_item,list):
print_lol(each_item)
else:
print(each_item)
#测试例子:
#array=[1,['a','b','c',['=','-','+']],'#']
#print_lol(array)
大家注意到”””””中间的文字和#开头的文字颜色不太一样,这里就是注释,与Java中/**/和//类似。这也是进行模块化必不可少的,因为这样才可以让用你程序的同仁了解你的程序的意义。
然后学习了如何将之前建好的程序进行 构建、打包和发布。
1. 首先为模块创建一个文件夹(Linux下为目录),然后将之前写好的程序*.py放到该文件夹里,为文件夹命名。
2. 在文件夹里新建一个setup.py的文件,这个文件包含了相关发布模块的元数据(即我们平时见到的解释文件),编写这个文件增加以下内容:
from distutils.core import setup
setup(
name = 'qhs',
version = '1.0.0',
py_modules = ['qhs'],
author = 'qhs',
author_email = '[email protected]',
url = 'blog.csdn.net/chinaonlyqiu',
description = 'A simple printer of nested lists',
)
3. 下面我们将构建这个模块(即要发布的文件):
我们首先打开DOS窗口(windows环境),将文件目录转到你文件所在的目录下,然后输入D:\Python33\python.exesetup.py sdist,回车后你会发现本来的文件夹下多出了好多文件,目录结构也发生了变化。这时候我们已经构建成功了一个要发布的文件。
4. 紧接着我们就要将我们刚构建好的这个模块安装到我们的本地电脑上的副本中:
仍然在DOS命令行下,输入D:\Python33\python.exe setup.py install,然后就可以在本地安装了。这时我们查看我们的目录结构可以看到如下的情况:
5. 这时我们可以在本地测试一下是不是已经构建和安装正确,以确定上传分享后同仁们可以使用。
我们可以使用importnester来进行测试,测试代码如下:
>>> import nester
>>>array=[1,['a','b','c',['=','-','+']],'#']
>>> print_lol(array)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
print_lol(array)
NameError: name 'print_lol' is not defined
我们可以看到上面的程序在IDLE中测试给出提示错误:没有找到print_lol这个函数,但是事实上我们确实是有这个函数。这是为什么呢?学过Java的朋友都知道,Java中引入函数前面都有很多包,例如:cn.edu.nwsuaf.cie.qhs.*,其实python也是一样有命名空间,如果不知道具体是哪个命名空间下的函数,就无法找到相应的函数。所以解决这个问题有两种方法:a.直接在使用函数时,使用nester.print_lol(array);b.使用fromnester import print_lol;这两种方法都可以解决问题。
6. 注册PYPI网站用户
当测试全部通过以后,我们就可以注册PYPI(http://pypi.python.org)网站的用户了,因为我们可以通过PYPI来分享我们的代码。
注册账号的过程中,需要提醒几点:
a. 如果你输入了注册信息,但是你点击了“register”按钮以后,发现跳转的页面为“没有找到页面”,那么你就应该好好的研究一下注册前后的英文提示信息了,因为提示中有说密码要有cases和numbers,并且必须大于8位,即要有英文的大小写还得有数字。
b. 上面的PGP Key ID (optional):是在注册时不需要的,所以不用担心这个,因为上面也有提示,说是optional,即可选项。
c. 当你注册信息提交成功以后,他会给你的注册邮箱发送一封邮件,只有点击了这个邮件里的邮件以后才算是成功注册完成了。
7. 注册成功以后,可以开始上传刚才构建的模块了
打开DOS命令行,输入D:\Python33\python.exe setup.pyregister,然后就可以开始注册这个模块了,当然这时我们需要输入用户名和密码,如果提示Serverresponse (403): You are not allowed to store 'nester' package information,那么说明这个文件已经重名了,不能上传,可以改一下更合适的名字来上传。
注册过程中有这些提示信息:
running register
running check
We need to know who you are, so please chooseeither:
1. useyour existing login,
2. registeras a new user,
3. havethe server generate a new password for you (and email it to you), or
4. quit
Your selection [default 1]:
1
Username: jingmoxiaosen
Password:
上面有四个提示项,如果已经注册过账号,可以选择1,其他选项也类似。注册成功后,会提示你是否保存这个用户的相关信息,你输入y/n,一般自己的电脑选择y!
8. 注册完成后,需要上传文件
在DOS命令行下输入D:\Python33\python.exe setup.py sdistupload就可以上传到pypi上了,成功后,可以登录到PYPI上查看多了一个package。
这个东西学完了就,写下来跟大家分享,也为自己以后再温习时留下参考!