在我编写某一个项目的时候,时常会发现我又用到了之前某个项目中写过的功能,这个时候只能找到以前的项目,将代码copy到新项目中调用。这是一种非常low的做法,一方面,查找以前的代码,费时费力;另一方面,一看就是初学者喜欢干的,作为一个码龄也算有几年的人,还一直满足于以前这种做法,是没有办法进步的。
网上其实也有许多类似的教程,但总觉得不够简练、友好,很多地方没有解释清楚,因此干脆自己写一个,方便自己也方便他人。
本文同步发布在我的个人博客-求索,个人博客文章地址
基础准备完成项目创立、工具代码编写、必要文件添加的操作
创建项目这部分应该都驾轻就熟,可以直接创建一个目录或者用pycharm创建一个新项目,并在新项目下创建一个同名目录,例如我创建一个cptools
项目,如下图所示:
总目录下除了存放代码外,一般还会存放README,LICENSE以及自动创建的build目录等,因此用这种方式将代码隔离开
编写工具代码这时候就可以在项目中编写你的个人代码了,通常来说我们代码主要编写为类和函数两种,方便调用。我简单地创建了一个类和函数,放到一个.py
文件中,如下图:
同时为了说明这是一个模块,需要添加一个__init__.py
文件,我们经常看到一个包直接提供函数的形式,例如requests.get()
,而不是requests.utils.get()
,是因为在__init__.py
中将该目录下所有文件的方法做了导入。如下图所示,我们将hello_cp.py
的所有内容导入,这样我们就可以直接用cptools.hello()
去调用hello
函数了,如下图:
name属性是指定包名,和目录一样即可
setup.py这个文件是用于告诉setuptools我们项目的版本号等信息的,创建在项目总目录下即可,如下所示:
LICENSE这里是许可证,一般我们采用MIT LICENSE,原文内容可以点击官网查看
README.md这部分是对整个项目的描述,可以编写对项目的介绍,这个时候你的目录应该和我下图显示的类似
到前面为止,必须的文件我们已经创建完毕,下面就是如何打包和发布的过程。
打包项目在总目录下执行如下代码
python setup.py sdist
这时候就会生成一个dist目录,如下所示:
需要验证邮箱
用twine
模块上传到pypitwine upload dist/*
如果没有twine,用pip install twine
到pypi上搜索cptools
这时候说明我们可以用pip install cptools
安装我们的模块了
pip install cptools
至此,一个完整的python包编写发布过程就结束了,以后有新的内容发布了依然是用相同的方法更新到pypi使用即可,不过记得更新你的版本号和github内容哦~