如何发布自己的python包到PYPI?给自己编写工具代码
前言
在我编写某一个项目的时候,时常会发现我又用到了之前某个项目中写过的功能,这个时候只能找到以前的项目,将代码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
LICENSE在github
上创建之初可以选择,如下图:
不同的开源协议包含不同的开源要求,具体可自己查询,一般我建议采用GNU v3.0
README.md
这部分是对整个项目的描述,可以编写对项目的介绍,这个时候你的目录应该和我下图显示的类似
打包发布到PYPI
到前面为止,必须的文件我们已经创建完毕,下面就是如何打包和发布的过程。
打包项目
在总目录下执行如下代码
python setup.py sdist
这时候就会生成一个dist目录,如下所示:
发布到PYPI
先点击这里注册一个pypi账号
需要验证邮箱
用
twine
模块上传到pypitwine upload dist/*
如果没有twine,用
pip install twine
查看我们的项目
到pypi上搜索cptools
这时候说明我们可以用
pip install cptools
安装我们的模块了
测试模块使用
pip install cptools
- 调用函数
总结
至此,一个完整的python包编写发布过程就结束了,以后有新的内容发布了依然是用相同的方法更新到pypi使用即可,不过记得更新你的版本号和github内容哦~
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!