如何将自己写的Python代码打包放到PyPI上

前言

在我们安装 第三方 Python 库的时候,通常我们都是

pip install xxx

那么,当我们自己写了一些自认为不错的库,想要分享给大家使用时,能不能也可以这样让大家使用呢?

环境配置

1、拥有一个 PyPI · The Python Package Index 的账号
注册链接:https://pypi.org/

2、安装setuptools ,wheel,twine

python3 -m pip install --user --upgrade setuptools wheel twine

项目步骤

1、创建一个目录结构,我们接下来的命令都在pykai 项目, 模块中必须包含init.py文件, 在该项目中再创建一个模块pykailp 、setup.py、README.md
如何将自己写的Python代码打包放到PyPI上_第1张图片
2、在你的项目模块pykailp中可以再创建包,也可以创建类,必须要有一个init文件。文件结构如图

如何将自己写的Python代码打包放到PyPI上_第2张图片
2.1、在test.py文件中编写:

class dome()def __init__(self):
		pass
	@staticmethod
    	def sum(self):
       	 	print("test")
       	
def print_test():
    print("print_test!!!!!")       	

文件夹名称可以根据自己意愿。模块的功能主要看你自己的要求。
2.2、创建许可证
LICENSE文件是授权文件,比如:MIT license, APACHE license
对于上传到Python软件包索引的每个软件包,都必须包含许可证,这一点很重要。这会告诉安装软件包的用户使用条款。有关选择许可证的帮助,请参阅 https://choosealicense.com/。选择许可证后,打开 LICENSE并输入许可证文本。例如,如果您选择了MIT许可证:

Copyright (c) 2018 The Python Packaging Authority

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

2.3、README.md:就是项目的介绍和描述

# Example Package

This is a simple example package. You can use
[Github-flavored Markdown](https://guides.github.com/features/mastering-markdown/)
to write your content.

2.4、setup文件才是重点,是python模块安装所需要的文件,setup.py 是 setuptools 的构建脚本,用于告知 setuptools 我们要上传到PYPI的库的信息(库名、版本信息、描述、环境需求等)。格式如下

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    name="pykailp",
    version="0.0.1",
    author="jiazhikai",
    author_email="[email protected]",
    description="Python wrapper for kailp: natural language processing",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/pypa/sampleproject",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: os Independent",
    ],
    
)

参数解析:

name:库名
version:版本号
author:作者
author_email:作者邮箱(如:别人发现了bug或者提建议给我们添加功能联系我们用的)
description:简述
long_description:详细描述(一般会写在README.md中)
long_description_content_type:README.md中描述的语法(一般为markdown)
url:库/项目主页,一般我们把项目托管在GitHub,放该项目的GitHub地址即可
packages:使用setuptools.find_packages()即可,这个是方便以后我们给库拓展新功能的(详情请看官方文档)
classifiers:指定该库依赖的Python版本、license、操作系统之类的

开始使用Distutils进行打包

为了保证效果,在打包之前我们可以验证setup.py的正确性,把cmd切换到项目文件位置,执行下面的代码

python setup.py check

如果没有问题,那么就可以正式打包,执行下面的代码:

python setup.py sdist

这会在项目文件夹生成dist目录和egg目录
如何将自己写的Python代码打包放到PyPI上_第3张图片
生成wheel命令:

python setup.py sdist bdist_wheel

这会dist目录生成一个wheel文件
如何将自己写的Python代码打包放到PyPI上_第4张图片
最后使用twine上传到pypi中

twine upload dist/*

如何将自己写的Python代码打包放到PyPI上_第5张图片
在这里需要你输入pypi 注册的用户名和密码

让我们去pypi中看看自己上传的库有没有存在

如何将自己写的Python代码打包放到PyPI上_第6张图片

这样我们就可以让别人也能使用我们的库了,

pip install pykailp -i https://pypi.python.org/simple

最后
祝你成功!!

你可能感兴趣的:(python架包,自然语言处理,python,github,git)