如何发布自己的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.mzph.cn/news/815998.shtml

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

相关文章

群晖双硬盘实时备份(WebDAV Server+Cloud Sync)

安装和设置 WebDAV Server WebDAV 是一种基于HTTP的协议扩展,它允许用户在远程Web服务器上进行文档的编辑和管理,就如同这些文件存储在本地计算机上一样。使用WebDAV,用户可以创建、移动、复制和修改文件和文件夹。 安装和设置 Cloud Sync…

使用 Prometheus 在 KubeSphere 上监控 KubeEdge 边缘节点(Jetson) CPU、GPU 状态

作者:朱亚光,之江实验室工程师,云原生/开源爱好者。 KubeSphere 边缘节点的可观测性 在边缘计算场景下,KubeSphere 基于 KubeEdge 实现应用与工作负载在云端与边缘节点的统一分发与管理,解决在海量边、端设备上完成应…

地球上四大洋介绍

地球上四大洋的分布是: 太平洋:太平洋是世界上最大的海洋,覆盖了约三分之一的地球表面。它位于亚洲、澳大利亚、美洲和南极洲之间。太平洋的面积约为1.6亿平方公里,拥有世界上最深的点——马里亚纳海沟。 大西洋:大西…

2024HW --> 安全产品 Powershell无文件落地攻击

在HW中,除了了解中间件,web漏洞,这些攻击的手法,还得了解应急响应,安全产品,入侵排查,溯源反制...... 那么今天,就来说一下安全产品(安全公司我就不说了,这个…

001vscode为什么设置不了中文?

VSCode中文插件安装 在VSCode中设置中文的首要步骤是安装“Chinese (Simplified) Language Pack for Visual Studio Code”扩展插件。这一过程十分简单,只需打开VSCode,进入扩展市场,搜索“ Chinese (Simplified) Language Pack ”然后点击…

【MATLAB源码-第49期】基于蚁群算法(ACO)算法的栅格路径规划,输出最佳路径图和算法收敛曲线图。

操作环境: MATLAB 2022a 1、算法描述 蚁群算法是一种模拟自然界蚂蚁觅食行为的启发式优化算法。在蚁群系统中,通过模拟蚂蚁之间通过信息素沟通的方式来寻找最短路径。 在栅格路径规划中,蚁群算法的基本步骤如下: 1. 初始化: …

MES实施优势有哪些?MES制造执行系统的主要内容

各个行业之间也开始进入到了激烈的竞争当中,很多企业为了能够有效提升企业竞争力,都会通过提升自身实力的方式来提升竞争力。一些制造业也会在经营过程当中使用到MES系统,那么,mes系统的优势有哪些呢? 1、优化企业现场…

mysql dump导出导入数据

前言 mysqldump是MySQL数据库中一个非常有用的命令行工具,用于备份和还原数据库。它可以将整个数据库或者特定的表导出为一个SQL文件,以便在需要时进行恢复或迁移。 使用mysqldump可以执行以下操作: 备份数据库:可以使用mysqld…

ELK日志分析系统+Filebeat

目录 一、Filebeat介绍 1、Filebeat简介 2、Filebeat的工作方式 3、filebeat工作流程 4、Filebeat的作用 5、filebeat的用途 1.为什么要用filebeat来收集日志?为什么不直接用logstash收集日志? 2.filebeat和logstash的区别 二、部署(ELFK)Fileb…

自动化测试Junit

1.什么是Junit JUint是Java编程语言的单元测试框架,用于编写和运行可重复的自动化测试。 JUnit 促进了“先测试后编码”TDD的理念,强调建立测试数据的一段代码,可以先测试,然后再应用。这个方法就好比“测试一点,编码一…

【SERVERLESS】AWS Lambda上实操

通过Serverless的发展历程及带给我们的挑战,引出我们改如何改变思路,化繁为简,趋利避害,更好的利用其优势,来释放企业效能,为创造带来无限可能。 一 Serverless概述 无服务器计算近年来与云原生计算都是在…

OSPF星型拓扑和MGRE全连

一,拓扑 二,要求 1,R6为ISP只能配置IP地址,R1-R5的环回为私有网段 2,R1/4/5为全连的MGRE结构,R1/2/3为星型的拓扑结构, 3,R1为中心站点所有私有网段可以互相通讯,私有网段…

antd+vue——datepicker日期控件——禁用日期功能

需求&#xff1a;今天之前的日期禁用 <a-date-pickerv-model.trim"formNE.deliveryTime":disabled-date"disabledDate"valueFormat"YYYY-MM-DD"allowClearstyle"width: 100%" />禁用日期的范围&#xff1a; //时间范围 disab…

第14届java A组蓝桥杯做题记录

A题 特殊日期 package Java14省赛.Java研究生组;import java.time.Year; //特殊判断一下2月份&#xff0c;leaf 为true 1 import java.util.*;import 蓝桥杯.dfs_n皇后; public class 特殊日期 {static int sum(int d){int res 0;while(d > 0){res d % 10;d / 10;}return…

Java GC了解

Jstack找到线程的快照 jvm提供其他命令作用 jps&#xff1a; 虚拟机进程状况工具&#xff0c;类似linux的ps命令 jstat&#xff1a;虚拟机统计信息监视工具&#xff0c;经常看gc情况的会使用到 jinfo: java配置信息工具 jmap&#xff1a; java内存映射工具&#xff0c;dump&am…

微服务篇面试题

1、SpringCloud的组件有哪些&#xff1f; 2、负载均衡如何实现&#xff1f; 3、什么是服务雪崩&#xff1f;怎么解决&#xff1f; 4、项目中有没有做过限流&#xff1f; Tomcat单体可以&#xff0c;分布式不适合 5、解释一下CAP和BASE P&#xff1a;加入node03这边的网络断了&a…

基于PCIe的智能处理系统研究

引言 人工智能是集合众多方向的综合性学科,在诸多应用领域均取得了显著成果。随着航空领域人工智能技术研究的不断深入,面向开放式机载智能交互场景,人工智能的应用可解决诸多问题。例如智能感知、辅助决策等,可利用人工智能算法对多源传感器捕获的海量信息进行快速处理,仅将处…

【8086汇编】汇编语言基础入门

文章目录 一、汇编简介1. 汇编语言的组成2. CPU、寄存器、内存3. CPU对存储器的读写4. 拓展5. 检测6. 解析 二、寄存器1. mov、add命令2. 物理地址3. CS:IP 装段地址和偏移地址3.1 如何改变CS:IP的值 4. 数据段DS:[address]4.1 前置知识&#xff1a;字与字节4.2 DS:[address] 5…

整数在内存中的存储和内存操作函数

目录 整数在内存中的存储1. 整数在内存中的存储2. 大小端字节序和字节序判断2.1 什么是大小端?2.2 为什么有大小端 3. 练习3.1 请简述大端字节序和小端字节序的概念&#xff0c;设计⼀个小程序来判断当前机器的字节序。&#xff08;10分&#xff09;-百度笔试题3.2 练习23.3 练…

java:特殊文件(properties,xml)和日志

特殊文件 txt(文本文件) txt文件是一种纯文本文件,用于存储文本信息 优缺点:txt文件简单易用,可以使用任何文本编辑器打开和编辑,但不支持数据类型和结构,所有信息均用纯文本形式保存 适合简单的配置信息存储 properties文件 properties文件是一种键值对文件,用于存储配置…