原标题:亲自动手写一个python库(二)

引言

经过上一节中所述,我们搭建好了一个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

python如何自己写库_亲自动手写一个python库(二)相关推荐

  1. python中datetime库_一天掌握一个Python库--datetime库

    #一天掌握一个Python库--datetime库 **datatime** 模块题共用一些处理日期,时间和时间间隔的函数.这个模块使用面向对象的交互取代了**time**模块中整形/元组类型的时间函 ...

  2. python爬酷狗音乐_良心推荐!一个Python高手必读的库,真香!

    菜鸟进阶高手,需要内外的修炼,外练招式,内修心法.招式有很多比如基本的函数,类,文件,模块,到并发,数据库的使用,再到一些框架的使用无论是爬虫的西瓜皮框架,还是后端的Django,Flask等等.内功 ...

  3. python开发项目架构图_我的第一个python web开发框架(8)——项目结构与RESTful接口风格说明...

    PS:再次说明一下,原本不想写的太啰嗦的,可之前那个系列发布后发现,好多朋友都想马上拿到代码立即能上手开发自己的项目,对代码结构.基础常识.分类目录与文件功能结构.常用函数......等等什么都不懂, ...

  4. 自己动手写java虚拟机_自己动手写操作系统(要了解的知识点)

    自己动手写操作系统(开篇) 自己动手写操作系统(字符显示) 说明:Intel 8086 或者不同的处理器,开机寄存器数据可能不一样,但是大致原理差不多 了解过计算机启动的同学肯定知道,当计算机启动的时 ...

  5. python面向对象编程指南 豆瓣_一文看懂Python面向对象编程(Python学习与新手入门必看)-绝对原创...

    尽管网上有许多关于Python面向对像的编程介绍,小编我看完后总觉得不是很满意,也不过瘾,所以决定自己亲自动手写篇文章,帮你理解Python面向对象的编程的基本概念和核心思想.本文内含很多实例代码,以 ...

  6. ad20如何导入库_零基础小白自学Python,如何快速学会及掌握?

    一开始学习计算机技术和编程会有些困难:该选择哪个编程语言?用哪个IDE?以及更重要的,为什么选它? 在我看来,编程时最重要的事是选择最适合解决问题的工具.其次是选择自己最擅长的工具.如果我告诉你你应该 ...

  7. python 归一化feed-dict程序代码_深度学习-中国大学mooc-题库零氪

    第一讲 人工智能导论 2.29日考勤 1.以下关于深度学习和机器学习的关系,描述正确的是: A.机器学习的范畴包含深度学习: B.深度学习的范畴包含机器学习: C.二者没有关系: D.二者等同. 第三 ...

  8. python如何安装panda数据库_在Pycharm中安装Pandas库方法(简单易懂)

    开发环境的搭建是一件入门比较头疼的事情,在上期的文稿基础上,增加一项Anaconda的安装介绍.Anaconda是Python的一个发行版本,安装好了Anaconda就相当于安装好了Python,并且 ...

  9. 自己动手写cpu 光盘_自己动手写CPU配套源码

    自己动手写CPU的源代码,一共15章,可以完整实现MIPS的指令 文件:n459.com/file/25127180-476886294 以下内容无关: ----------------------- ...

  10. python 标准模板库_比较了3个Python模板库

    python 标准模板库 在我的日常工作中,我花费大量时间将各种来源的数据整理成人类可读的信息. 虽然在很多时候,这只是以电子表格或某种类型的图表或其他数据可视化的形式出现,但在其他情况下,有意义的是 ...

最新文章

  1. 关于AttributeError: module ‘numpy‘ has no attribute ‘integer‘的解决方法
  2. ARP协议SMTP协议MIME
  3. C++设计模式--工厂方法模式
  4. 2016年CCF第七次测试 俄罗斯方块
  5. fdfs_client.exceptions.DataError: [-] Error: 2, No such file or directory报错问题
  6. 开源正在蚕食 500 亿美元的数据库行业!
  7. 基于Pre-trained模型加速模型学习的6点建议
  8. 龙威ol服务器维护,《龙威OL》搅屎棍职业技能攻略详解
  9. Spring Cloud 从入门到精通
  10. 利用Python爬虫和Tableau分析链家网二手房信息
  11. Graphpad作图--百分比堆积柱形图
  12. 计算机软件毕业论文模板,计算机软件毕业论文提纲模板
  13. 如何对销售额进行预测?
  14. JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么
  15. PMP题目与解题思路(第二天)
  16. 2017杭州云栖大会参会体验
  17. JAVA删除pdf空白页_如何从iText中的PDF中删除空白页面
  18. Python当中华氏度和摄氏度转换
  19. idea中找不到Lombok插件的问题
  20. 保研经验:夏令营失利,我是这样利用九推去了C9的

热门文章

  1. 1817735-45-7,Carboxy-PEG2-sulfonic acid在EDC和HATU等活化剂存在下,末端羧酸可参与与伯胺的反应
  2. Eclipse连接Github出现not authorized
  3. 2022年MSI赛程安排时间表 MSI赛事规则
  4. Redis源码解读(七)——基本类型—dict
  5. element提交图片限制一张_ElementUI 上传文件以及限制
  6. “数据分析师”招聘信息的数据分析
  7. c# 接管系统鼠标_4个阶段的方法来接管大型,混乱的IT系统
  8. 阿里云-学生成长计划领取资格考试 - 云计算及云服务器入门!超详细多题答案!白嫖阿里云服务器!
  9. 零基础如何入门激光SLAM
  10. 男生为什么不追女生?