之前学习了Python的列表,以及编写了一个函数来进行列表的输出,这次我们就继续来学习如何把我们已经编写好的代码共享到PyPI社区,这里以上篇文章中编写的print_lol函数为例。

函数转换为模块

为了进行print_lol函数的共享,我们首先要把此函数封装到一个模块中去,所谓的模块,其实就是一个以.py结尾的文件,这里我们把上一篇文章中的print_lol函数放到一个wukong.py文件中(这个文件我放置到了D:\python文件夹中),下面是wukong.py文件的内容:

def print_lol(movies):
for item_1 in movies:
if isinstance(item_1,list):
print_lol(item_1)
else:
print(item_1)

当然我们也可以给这个函数增加一些注释,以便于清楚的知道这个函数的功能,在Python中注释使用三个"来表示,如下:

"""这里是wukong模块,print_lol函数专门用来输出一个列表"""
def print_lol(movies):
for item_1 in movies:
if isinstance(item_1,list):
print_lol(item_1)
else:
print(item_1)

然后我们可以在python的IDLE中按下F5来重新启动Python Shell,这是就是加载当前我们定义的这个模块,我们直接可以使用这个模块进行列表的打印,如下:

>>> ================================ RESTART ================================
>>>
>>> movies = ["The Holy Grail",1975,"Terry Jones & Terry Gilliam",91,
["Graham chapman",["Michael Palin","John cleese","Terry Gilliam","Eric Idle & Terry Jones"]],
"The Life of Brain",1979,"Terry Jones",94,
["Graham chapman",["Michael Palin","John cleese","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
The Life of Brain
1979
Terry Jones
94
Graham chapman
Michael Palin
John cleese
Terry Gilliam
Eric Idle & Terry Jones
>>>

这里我们能看到RESTART的字样,说明Python Shell已经重新启动了,这样也说明我们的模块也已经加载了,所以在之后的movies打印之前我们并没有定义print_lol函数,而可以直接使用了。

准备发布

现在我们可以进行准备将当前的wukong.py发布到PyPI上了,但是现在我们要做一下的几个工作:
1、把wukong.py放入到一个文件夹中,这里我放置到了D:\python\wukong文件夹中
2、在新文件夹中创建一个名为setup.py的文件,即在D:\python\wukong文件夹中创建一个setup.py文件,这个文件用来存储有关发布的数据信息,内容如下:

"""从python发布工具导入setup函数"""
from distutils.core import setup
"""设置setup函数的参数,其中py_modules为我们将要发布的模块,这里为wukong.py,所以值为wukong"""
setup(
name = 'wukong',
version = '1.0.0',
py_modules = ['wukong'],
author = 'wukongcode',
author_email = 'bjwangzhen@pku.edu.cn',
url = 'http://blog.csdn.net/wukongcode',
description = 'A simple printer of nested lists',
)

3、构建一个发布文件,在D:\python\wukong文件夹下打开一个终端,这里为DOS,键入一行命令:python setup.py sdist,前提是我们要配置好python的环境变量,如下:


然后打开DOS,进行输入语句:



4、将发布安装到你的Python本地副本中,在终端输入命令:python setup.py install,如下:



这时我们把模块发布到本地的库中了,所以我们也可以在shell导入这个本地库并使用的,如下:
>>> import wukong
>>> names = ['zhangsan','lisi','wangwu']
>>> print_lol(names)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
print_lol(names)
NameError: name 'print_lol' is not defined
>>>

我们使用import wukong将我们的模块导入到其中了,但是在使用时却报错了。说没有找到print_lol,这是因为在Python有一个命名空间的概念,默认情况下是在__main__的命名空间中,而我们的代码在wukong命名空间中,所以我们这里要指定对应的命名空间,如下:

>>> import wukong
>>> names = ['zhangsan','lisi','wangwu']
>>> wukong.print_lol(names)
zhangsan
lisi
wangwu
>>>

这里我们通过wukong.print_lol来调用此方法。

到这里我们就准备好了发布模块,如果我们想要将自己的模块发布到PyPI上的话,我们还需要到PyPI上注册账号

注册PyPI网站

要发布我们的模块,我们首先要到PyPI网站(
点击打开链接)注册我们自己的账号:


填写完以上的信息以后,PyPI网站就会给我们发送一封邮件,里面有确认连接,我们直接点击,进行确认注册即可。

向PyPI上上传代码

首先我们要在DOS中填写下我们在PyPI上注册的信息,这个在本机上只需执行一次。如下:


注册自己的信息以后,我们就可以上传自己的代码了。如下:




好了,我们已经成功的上传我们自己的代码到PyPI上了,这样别人就可以下载和使用我们的模块了。

【Python实战02】共享Python代码到PyPI社区的更多相关文章

  1. 【Python实战】使用Python连接Teradata数据库???未完成

    1.安装Python 方法详见:[Python 05]Python开发环境搭建 2.安装Teradata客户端ODBC驱动 安装包地址:TTU下载地址 (1)安装TeraGSS和tdicu(ODBC依 ...

  2. python实战===一句python代码搭建FTP服务

    环境搭建: python windows/linux pip install pyftpdlib  (安装失败请到这里下载:https://pypi.python.org/pypi/pyftpdlib ...

  3. 再一波Python实战项目列表

    前言: 近几年Python可谓是大热啊,很多人都纷纷投入Python的学习中,以前我们实验楼总结过多篇Python实战项目列表,不但有用还有趣,最主要的是咱们实验楼不但有详细的开发教程,更有在线开发环 ...

  4. python实战:用70行代码写了一个山炮计算器!

    python实战训练:用70行代码写了个山炮计算器! 好了...好了...各位因为我是三年级而发牢骚的各位伙伴们,我第一次为大家插播了python的基础实战训练.这个,我是想给,那些python基础一 ...

  5. Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果

    Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果 一.详细说明及代码 tc.py =============================================== ...

  6. 上传python代码到pypi

    上传python代码到pypi 去pypi官网注册账号 在项目中添加setup.py # coding = utf-8 from setuptools import setup, find_packa ...

  7. 推荐学习《Python与量化投资从基础到实战》PDF及代码+《量化投资以Python为工具》PDF及代码

    利用python分析量化投资问题是现在研究的热点,推荐两份资料用于学习 <Python与量化投资:从基础到实战>主要讲解如何利用Python进行量化投资,包括对数据的获取.整理.分析挖掘. ...

  8. headfirst python 01~02

    列表 列表就像是数组 在python 创建一个列表时, 解释器会在内存中创建一个类似数组的数据结构来存储数据, 数据项自下而上(形成一个堆栈), 类似于其他编程语言中的数组. 列表中常用方法: cas ...

  9. 自然语言处理之中文分词器-jieba分词器详解及python实战

    (转https://blog.csdn.net/gzmfxy/article/details/78994396) 中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,在进行中文自 ...

随机推荐

  1. 【JavaScript学习笔记】调用google搜索

    <html> <form method=get action="http://www.google.com/search"> <a href=&quo ...

  2. QQ网站如何检测对本地已经登录的qq用户

    网上有很多猜测,比如—— QQ 登录时在本地某地方存登录 ID 信息(Cookie 或文件),用 js 读,然后去服务器认证.但是现在的浏览器一般有沙箱功能,js 无法读到登录 ID:而且在清空 Co ...

  3. 搭建 MPICH3 并行计算环境

    先记录在单机MacBook上的搭建,实验室集群的搭建流程是一样的,不过每台机器都需要做一次. MacBook: 1.安装mpich3: $ ./configure --prefix=/Users/xi ...

  4. Word2003使用VBA教程

    [正文] 注:本文中所有vba代码都是储存在doc中,而非normal.dot 1.打开一个.doc文档 2.按ALT+F11 3.左侧 Project-插入-模块 4.输入自己的代码,一定要是函数的 ...

  5. 支持 MBTiles 规范的预缓存

    SuperMap iServer 支持生成符合MBTiles规范的预缓存(MBTiles是由MapBox制定的一种将瓦片地图数据存储到SQLite数据库中并可快速使用,管理和分享的规范. 该规范由Ma ...

  6. 《学习OpenCV》中求给定点位置公式

    假设有10个三维的点,使用数组存放它们有四种常见的形式: ①一个二维数组,数组的类型是CV32FC1,有n行,3列(n×3) ②类似①,也可以用一个3行n列(3×n)的二维数组 ③④用一个n行1列(n ...

  7. 软件推荐列表(Recommand Software)

    1.Nutstore(https://jianguoyun.com/) Nutstore是一款云端同步软件.类似的有微软的OneDrive(旧名SkyDrive).Google Cloud Drive ...

  8. ASP.NET MVC3细嚼慢咽---(1)网站创建与发布

      这一节我们演示下怎样使用VS2010创建与发布MVC3建立的网站.使用VS2010创建MVC3.0网站,需要下载MVC3.0的安装包,这个大家可以去网络上下载.     1.项目创建       ...

  9. 干掉cmd:windows下使用linux命令行

    对于喜欢用命令行的朋友们,在windows下面使用cmd窗口是不是很不爽?复制不方便?不能随意放大缩小?如果需要多个控制台要多个窗口?....各种不爽 一.基础工具 如果你也不爽,那就对了,所以给大家 ...

  10. Java的平台无关性

    转载自:http://www.cnblogs.com/Y/archive/2011/03/22/JavaVM_Learning_Chapter2_Platform_Independence.html ...