亲自动手写一个python库(二)
来源:互联网 发布:多媒体数据特点 编辑:程序博客网 时间:2024/05/29 14:56
引言
经过上一节中所述,我们搭建好了一个Python环境用于库开发,我们在这一节真正开始搭建一个库,并将其发布。
项目文档结构
首先我们先构建出自己项目的文档结构,首先是LICENSE和README.md,这两个文件并不是必要的,但是最好将其加上,方便别人了解你的项目。README.md是关于本项目的介绍,LICENSE是表示该项目所遵循的开源协议,一般MIT用的比较多,其他协议你可以百度谷歌了解一下。
接下来是打包库需要的一些文件,主要有MANIFEST.in和setup.py两个文件。MANIFEST.in表示打包时不会被自动包含进去的附加文件清单。setup.py是打包程序配置文件,需要设置一些选项。此外,setup.cfg是包含setup.py额外配置信息的文件,我没有用到这其中的设置,所以本项目中其是空的。
caafinder文件夹就是我们要写的Python程序,我们要注意这个文件夹里必须有__init__.py这个文件。
下面是一下setup.py的一些简单配置选项,详细请参考官方文档。
可以参考一下:
PyPA sample project这是一个官方示例库结构。
Python Packaging User Guide这是Python打包的官方英文文档。
关于模块
模块也就是库,我们自己写程序时,通常通过import XX来导入一个需要的模块,在Python中,一个py文件就是一个模块,如一个abc.py的文件就是一个名字叫abc的模块。
你也许还想到,如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package),包是一个带有__init__.py的文件夹,如图中文档所示,我们有一个包caafinder,因为它的子级有一个__init__.py,包caafinder拥有database和workspace两个模块。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是caafinder。
程序打包
通过执行下列语句来进行打包:
其中xxx可以是下列几种方式中其中一个:
举个例子:
此时在根目录出现了dist文件夹,里面有name-version.tar.gz这个文件,这就是我们要发布到PyPI的压缩包了。
发布到PyPI
首先我们需要在PyPI上注册一个帐号,并在本地用户根目录下创建文件~/.pypirc,这样以后就不需要输入帐号密码了。
接下来,需要在PyPI网站上注册一个项目,网站提供三种方式注册,选择一种即可,最简单的是通过上传打包时生成的PKG-INFO文件,生成项目信息。此步骤只需在第一次发布时操作。
接下来就是最后一步,上传打包好的库。我们这里是用twine,如果环境中没有安装,需要先采用pip install twine安装即可。
此时在网页上就可以看到自己的源代码包啦,并且可以通过使用pip install packagename,就可以使用我们自己写的Python库了。
祝大家玩的开心,希望大家能到Github上帮忙点个赞。
作者:Gutierrez
来源:http://www.jianshu.com/p/81d20ccf5d13
————广告时间————
马哥教育2018年Python自动化运维开发实战面授班2018年3月5号开班,马哥联合BAT、豆瓣等一线互联网Python开发达人,根据目前企业需求的Python开发人才进行了深度定制,加入了大量一线互联网公司:大众点评、饿了么、腾讯等生产环境真是项目,课程由浅入深,从Python基础到Python高级,让你融汇贯通Python基础理论,手把手教学让你具备Python自动化开发需要的前端界面开发、Web框架、大监控系统、CMDB系统、认证堡垒机、自动化流程平台六大实战能力,让你从0开始蜕变成Hold住年薪20万的Python自动化开发人才。
扫描二维码领取学习资料
更多Python好文请点击【阅读原文】哦
↓↓↓
- 亲自动手写一个python库(二)
- 亲自动手写一个Python库(一)
- 写一个makefile(二)
- 用python写一个singleton
- 用python写一个进程
- 计划写一个python程序
- python 写一个pyH网页
- 一个python写的小游戏
- python 写一个静态服务
- 用python写一个菱形
- Python从零开始写爬虫(二)BeautifulSoup库使用
- 亲自动手画红黑树
- 用python写的一个漏洞库自动…
- 写网络爬虫学python(二)
- 学习python写网络爬虫(二)
- 自己动手写一个APK安装器(二)
- 自己写一个MVC框架(二)
- 从无到有写一个C#弹球小游戏(二)
- 三种移动处理器(ARM, Intel和MIPS)之间的主要区别
- python中的细节—左闭右开原则
- node中的express框架,nodemon设置修改代码后服务自动重启
- 利用sm.ms写github项目主页
- 记一次调试python内存泄露的问题
- 亲自动手写一个python库(二)
- Linux DNS 服务器安装、配置和维护
- Linus:鄙视用道德绑架开源的行为
- 常见布局(一)
- leetcode 556. Next Greater Element III 字典序
- 精选机器学习&深度学习视频资源合集 !
- CSS样式(CSS可见性、css之内容移除)
- [Android][AS]Error:Failed to find Build Tools revision 26.0.2
- MS COCO数据集目标检测评估(Detection Evaluation)(来自官网)