如何发布自己的Python库?

Python包发布

      • 1、背景概述
      • 2、操作指南



1、背景概述


为什么我们要发布自己的Python库?如果你想让你的Python代码,通过pip install xxx的方式供所有人下载,那就需要将代码上传到PyPi上,这样才能让所有人使用

那么,如何发布一个Python库呢?本文将通过具体实践为你提供一份简明的指南

首先,发布一个Python库需要做以下准备:

  • 注册一个PyPi账号:https://pypi.org/account/register/
  • 更新pip到最新版本:py -m pip install --upgrade pip
  • 安装编译工具:pip install --upgrade build
  • 安装PyPi上传工具:pip install twine

2、操作指南


2.1、创建项目结构

a、 创建本地目录结构

mypro/└── src/└── module/├── __init__.py└── core.py

以上除了src__init__.py固定外其他都可自定义;目录结构需保持一致

其中__init__.py用于将目录作为包导入,默认可为空;core.py是包中的一个模块,用于提供功能供下载者调用

b、 创建上传所需文件

mypro/├── src/│   └── module/│       ├── __init__.py│       └── core.py├── LICENSE├── README.md├── requirements.txt└── setup.py/pyproject.toml      

LICENSE:许可文件:

Copyright (c) 2018 The Python Packaging AuthorityPermission 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.

README.md:包的详细描述

requirements.txt:包的依赖库

setup.py/pyproject.toml:Python项目打包的核心配置文件

  • setup.py的示例如下:
from setuptools import setup, find_packageswith open("README.md", "r", encoding="utf-8") as f:long_description = f.read()# with open('requirements.txt', "r", encoding="utf-8") as f:
#     required = f.read().splitlines()setup(name="cc_package",                               # 包名version="0.0.1",                                 # 版本号author="cc",                                     # 作者author_email="cc@qq.com",                        # 邮箱description="package test",                      # 简短描述long_description=long_description,               # 详细说明long_description_content_type="text/markdown",   # 详细说明使用标记类型# url="https://github.com/",                     # 项目主页packages=find_packages(where="src"),             # 需要打包的部分package_dir={"": "src"},                         # 设置src目录为根目录python_requires=">=3.6",                         # 项目支持的Python版本# install_requires=required,                     # 项目必须的依赖include_package_data=False                       # 是否包含非Python文件(如资源文件)
)

在这里插入图片描述

2.2、编写核心功能

编写包的核心功能,这里以core.py为例:

def hello():print("Hello World!")

2.3、编译打包

打开终端命令行,执行(与setup.py/pyproject.toml同级):

python -m build

打包完成后,会生成dist文件和打包文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.4、源码上传

执行检查:

twine check dist/*

在这里插入图片描述

检查是否存在问题,若提示存在问题,先解决;若无问题,执行命令上传:

twine upload dist/*

在这里插入图片描述

API Token的获取:

a、 登录PyPi官网,找到账户设置

在这里插入图片描述
b、 找到API Token
在这里插入图片描述

c、 创建API Token

在这里插入图片描述

如下表示上传成功:

在这里插入图片描述
2.5、验证

a、 访问上传成功的地址,是否存在刚才上传的包

在这里插入图片描述

在这里插入图片描述

b、 使用pip install xxx验证是否可安装

注意:如果使用的镜像不是官网,例如国内使用最多的清华镜像,可能需要等5分钟以上才能安装,镜像同步需要时间

在这里插入图片描述



参考文章:
https://www.cnblogs.com/meet/p/18057112
https://zhuanlan.zhihu.com/p/666369946
https://www.zhihu.com/question/585934803/answer/3451136762


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/309606.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

守护你的网络,防御ddos攻击的必备技能

随着互联网的普及,网络安全问题越来越受到人们的关注。在各种网络攻击中,DDoS 攻击是一种最常见的攻击方式,它能够使网站或网络服务站点瘫痪,给用户带来极大的困扰,给企业带来财务损失。 DDoS 是什么? DDoS…

第⑭讲:Ceph集群管理:守护进程管理、日志管理和端口号配置

文章目录 1.Ceph各组件守护进程的管理方式2.守护进程管理操作2.1.Ceph所有组件的守护进程列表2.2.重启当前主机中所有的Ceph组件2.3.重启主机中所有的Monitor组件2.4.重启指定主机的Monitor组件2.5.重启指定的OSD组件 3.Ceph的日志管理4.Ceph集群各组件的守护进程5.Ceph集群各组…

位像素海外仓管理系统对接ERP系统教程,一对一教学

在海外仓管理过程中,对接ERP系统的重要性不言而喻的。这种对接不仅能让数据实时共享,还能让海外仓管理者优化整个供应链管理流程。 因此,今天小编就来教大家,海外仓仓库系统是怎么对接ERP物流系统的? 1.分析需求 在对接…

【算法】字符串

个人主页 : zxctscl 如有转载请先通知 题目 1. 14. 最长公共前缀1.1 分析1.2 代码 2. 5. 最长回文子串2.1 分析2.2 代码 3. 67. 二进制求和3.1 分析3.2 代码 4. 43. 字符串相乘4.1 分析4.2 代码 1. 14. 最长公共前缀 1.1 分析 从第一个字符串开始两两比较&#xff…

OpenStack (T)部署trove

环境:Openstack(T) CentOS Linux release 7.9.2009 (Core) 正文: 1.控制节点安装trove软件包 # yum install openstack-trove-guestagent openstack-trove python-troveclient openstack-trove-ui –y2.创建数据库&#xff0c…

【Go语言快速上手(一)】 初识Go语言

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:Go语言专栏⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多Go语言知识   🔝🔝 Go快速上手 1. 前言2. Go语言简介(为…

[Spring Cloud] (3)gateway令牌token拦截器

文章目录 集成redisNacos配置增加 redis配置配置pomredis配置RedisConfigredis序列化工具FastJson2JsonRedisSerializer测试 令牌校验拦截器nacos配置拦截器代码微服务登录接口实现 最终效果-登录接口与数据接口 本文gateway与微服务已开源到gitee 杉极简/gateway网关阶段学习 …

陪玩小程序开发 运营级别陪玩成品搭建 支持二开源码交付 游戏陪玩系统,游戏陪玩源码,游戏陪玩语音社交源码

陪玩系统是一种新兴的服务模式,主要通过线上预约和线下社交、陪伴、助娱、分享、指导等方式为用户提供服务。这种服务模式适用于多种场景,包括家庭陪护、吃饭陪聊、景点伴游、网游陪练、健身指导、线下桌游、酒吧K歌、逛街观影、剧本密室、聚会轰趴、美食…

三年了,期待下一个三年

第一个三年 时间好快,距离我发布我第一篇文章都已经三个年头了。 转眼也从大一新生变成了大四打工人。 在平台上发布博客,分享自己的项目、学习思路、解决的bug都带给我很多收获。 平台上的粉丝,阅读量等,也让我的简历更加出彩。…

绝地求生:杜卡迪来了,这些摩托车技巧不学一下吗?

摩托车在远古版本和现在完全不一样,虽然容易翻车造就了一批玩家“摩托杀手”的外号,但是速度可比今天快多了。 后来在蓝洞的削弱了其加速度,虽然资料上写着最高时速155km/h,但是平时游戏中一般只能拉到110~120km/h。这里写一点摩托…

最新版守约者二级域名分发系统

主要功能 二级域名管理: 我们的系统提供全面的二级域名管理服务,让您轻松管理和配置二级域名。 域名分发:利用我们先进的域名分发技术,您可以自动化地分配和管理域名,确保每个用户或客户都能及时获得所需的域名资源。…

Ceph [OSDI‘06]论文阅读笔记

原论文:Ceph: A Scalable, High-Performance Distributed File System (OSDI’06) Ceph简介及关键技术要点 Ceph是一个高性能、可扩展的分布式文件系统,旨在提供出色的性能、可靠性和可扩展性。为了最大化数据和元数据管理的分离,它使用了一…

网络篇06 | 应用层 自定义协议

网络篇06 | 应用层 自定义协议 01 固定协议设计(简化版)1)总体设计2)值设计 02 可变协议设计(进阶版)1)固定头(Fixed Header)2)可变头(Variable H…

5、LMDeploy 量化部署 LLMVLM实战(homework)

基础作业(结营必做) 完成以下任务,并将实现过程记录截图: 配置lmdeploy运行环境 由于环境依赖项存在torch,下载过程可能比较缓慢。InternStudio上提供了快速创建conda环境的方法。打开命令行终端,创建一…

简单认识Git(dirsearch、githack下载),git泄露(ctfhub)

目录 dirsearch下载地址: githack下载(一次不成功可多试几次) 一、什么是Git 1.git结构 2.git常用命令及示例 3.Git泄露原理 二、Git泄露 1.Log 2.Stash 3.Index 工具准备:dirsearch、githack dirsearch下载地址: GitHub - mauroso…

数字乡村创新实践探索农业现代化与乡村振兴新路径:科技赋能农村全面振兴与农民幸福新篇章

随着信息技术的飞速发展,数字乡村成为推动农业现代化与乡村振兴的重要战略举措。科技赋能下的数字乡村创新实践,不仅提升了农业生产的智能化水平,也为乡村治理和农民生活带来了翻天覆地的变化。本文旨在探讨数字乡村创新实践在农业现代化与乡…

OpenCV的查找命中或未命中

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV4.9更多形态转换 下一篇:OpenCV系列文章目录(持续更新中......) 目标 在本教程中,您将学习如何使用 Hit-or-Miss 转换(也称为 Hit-and-Miss 转…

JavaScript知识点 --javaweb学习笔记

什么是Javascript? JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互JavaScript 和Java 是完全不同的语言,不论是概念还是设计。但是基础语法类似JavaScript在1995 年由 Brendan Eich 发明,并…

护眼台灯什么品牌好?推荐目前比较好用的护眼台灯

现在孩子的近视率很高,尤其是儿童青少年居多,上了小学作业都变多了,很多孩子经常需要学习到很晚,不过家长们在重视教育质量的同时,有注意到孩子学习时的光线适合学习吗?用眼过度和光线不合适都容易导致近视…

Java快速入门系列-9(Spring框架与Spring Boot —— 深度探索及实践指南)

第九章:Spring框架与Spring Boot —— 深度探索及实践指南 9.1 Spring框架概述9.2 Spring IoC容器9.3 Spring AOP9.4 Spring MVC9.5 Spring Data JPA/Hibernate9.6 Spring Boot快速入门与核心特性9.7 Spring Boot的自动配置与启动流程详解9.8 创建RESTful服务与数据库交互实践…