如何将自己写的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
在这里插入图片描述
2、在你的项目模块pykailp中可以再创建包,也可以创建类,必须要有一个init文件。文件结构如图

在这里插入图片描述
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="15716539228@163.com",
    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目录
在这里插入图片描述
生成wheel命令:

python setup.py sdist bdist_wheel

这会dist目录生成一个wheel文件
在这里插入图片描述
最后使用twine上传到pypi中

twine upload dist/*

在这里插入图片描述
在这里需要你输入pypi 注册的用户名和密码

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

在这里插入图片描述

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

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

最后
祝你成功!!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值