2024一站式解决 python打包代码,发布到pypi

2024一站式解决 python打包代码,发布到pypi

文章目录

  • 2024一站式解决 python打包代码,发布到pypi
  • 一、前言
  • 二、pypi账户注册与配置
    • 2.1 账户注册
    • 2.2 双因素认证
    • 2.3 API token生成
  • 三、代码打包
    • 3.1 准备代码
    • 3.2 编写setup.py文件
    • 3.3 LICENSE
      • 3.3.1 常见的开源许可证
    • 3.4 构建包
      • 3.4.1 环境安装
      • 3.4.2 打包
      • 3.4.3 上传包到pypi
  • 四、测试与更新
    • 4.1 上传pypi库测试
    • 4.2 库更新

一、前言

各位开发者你们好,在这个万众创新的时代,发布自己的代码到pypi上逐渐变越发常见,不过网上教程良莠不齐,受限于平常时间,只能简单整理一下,下面是具体步骤。

个人跑通pypi上传项目全流程大概耗时40分钟左右,请预留一定时间,跟完全流程。

二、pypi账户注册与配置

2.1 账户注册

在代码正式发布到pypi之前,你需要提前完成pypi账户注册和配置
pypi地址:https://pypi.org/
在这里插入图片描述
在这里按照信息填完,申请注册即可。
注:邮箱可能会被归类到垃圾邮箱。如果在收件箱没有找到可以看看垃圾邮箱。
在这里插入图片描述

2.2 双因素认证

注册账号,注册后,需要双因素认证,可使用恢复代码、usb、扫码(支持 TOTP 标准的常用扫码工具,Google Authenticator、Authy、Microsoft Authenticator、LastPass Authenticator)
本人的双因素认证是使用了:恢复代码和Microsoft Authenticator这个扫码工具
其他TOTP标准扫码工具集如下:https://pypi.org/help/#totp
在这里插入图片描述
认证流程的话就是下载后,扫认证码即可(很显眼这个码,不会认错的),具体使用哪个TOTP扫码工具各位酌情选择。

2.3 API token生成

在pypi账号设置,Account settings中,创建token,创建后记录好API token,在代码上传的时候会用到。
在这里插入图片描述

三、代码打包

3.1 准备代码

一个根目录,包含所有代码。

  1. 一个 setup.py 文件,其中包含有关您的包的信息(名称、版本、依赖等)。
  2. 可选的 README.md 或 README.rst 文件,说明您的项目。
  3. 一个 LICENSE 文件,说明您的包的许可证。
  4. 一个包含 Python 代码的子目录。
  • my_package/
    setup.py
    README.md
    LICENSE
    my_package/
    • init.py
      module1.py
      module2.py

3.2 编写setup.py文件

from setuptools import setup, find_packages
 
setup(
    name='my_package',
    version='0.1',
    packages=find_packages(),
    description='A simple example package',
    long_description=open('README.md').read(),
    # python3,readme文件中文报错
    # long_description=open('README.md', encoding='utf-8').read(),
    long_description_content_type='text/markdown',
    url='http://github.com/yourusername/my_package',
    author='Your Name',
    author_email='your.email@example.com',
    license='MIT',
    install_requires=[
        # 依赖列表
    ],
    classifiers=[
        # 分类信息
    ]
)

version:版本号。
my_package:包含 Python 代码子目录的名称。
description:描述。
long_description:读取readme文件
url:可不填
license:证书类型(下面说明)

3.3 LICENSE

在软件和开源项目中,LICENSE 文件非常重要,它定义了他人可以如何使用、修改、共享你的代码。LICENSE 文件通常包含了特定的许可证全文,这个许可证规定了对代码的使用权限和限制。

3.3.1 常见的开源许可证

  • MIT License:一种非常宽松的许可证,允许他人几乎无限制地使用你的代码。

  • GNU General Public License (GPL):要求任何分发的软件或其衍生品都必须开源。

  • Apache License 2.0:允许商业使用,但要求保留版权和许可证声明。

  • BSD License:一种简单的许可证,有几个不同的变体,但通常都很宽松。

一个典型的 MIT 许可证:

MIT License
 
Copyright (c) [year] [fullname]
 
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.

在这个例子中,你需要将 [year] 替换为当前年份,[fullname] 替换为你的名字或组织名。

3.4 构建包

3.4.1 环境安装

pip install wheel
pip install twine  # twine 是一个用于上传包到 PyPI 的工具。
pip install setuptools 

3.4.2 打包

setup.py层级,执行命令:

python setup.py sdist bdist_wheel

3.4.3 上传包到pypi

twine upload dist/*

输入2.3 生成API Token
在这里插入图片描述
注:setup.py中,名称不能与已有的重复
上传成功后的运行示意图如下:
在这里插入图片描述

四、测试与更新

4.1 上传pypi库测试

pip install my_package

在这里插入图片描述
安装成功!

注:如果之前换了清华源,可能上传后要过一段时间才能从清华源安装。方式二就是临时从pypi进行下载如:

pip install folerhandle  -i https://pypi.org/simple

4.2 库更新

(1)更新的时候需要删掉之前生成的dist
在这里插入图片描述
(2)setup.py 上更新Version
(3)重新执行一遍3.4.2 打包和3.4.3 上传包到pypi

到这里这项上传到pypi的小技能就过完了,如果有什么问题欢迎在评论区中留言。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PCIe协议之-TLP Header详解(二)

✨前言: 在PCIe中,存在几种不同类型的请求,主要包括IO(Request)请求、存储器(Request)请求和配置(Request)请求。这些请求类型允许CPU与连接在PCIe总线上的设备进行通信和控制。 🌟1. IO(Request)请求 定义与作用: IO请求&…

软件测试有哪些常用的测试方法?

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 软件测试是软件开发过程中重要组成部分,是用来确认一个程序的质量或者性能是否符合开…

AES分组密码

一、AES明文和密钥位数 RIJNDAEL 算法数据块长度和密钥长度都可独立地选定为大于等于 128 位且小于等于 256 位的 32 位的任意倍数。 而美国颁布 AES 时却规定数据块的长度为 128 位、密钥的长度可分别选择为 128 位, 192 位或 256 位 1.1 状态 中间结果叫做状态…

Jmeter(四十一) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 下篇(详解教程)

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 为什么宏哥要对Jmeter的配置文件进行一下讲解了,因为有的童鞋或者小伙伴在测试中遇到一些需要修改配置文件的问题不是很清楚也不是很懂,就算修改了也是…

线性回归学习笔记

学习了王天一博士的机器学习40讲,做个小总结: 1、机器学习中,回归问题隐含了输入变量和输出变量均可连续取值的前提。 2、单变量线性回归,所有样本到直线的欧氏距离之和最小,即均方误差最小化。 3、最小二乘法的几何意…

【C语言深度解剖】(12):C语言库函数的学习和模拟实现,一篇文章就够了!

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多C语言深度解剖点击专栏链接查看&…

python REST 请求验证

REST 请求验证 在Python中,可以使用cerberus库来进行REST请求的验证。以下是一个简单的示例,演示如何使用cerberus进行请求数据的验证。 首先,安装cerberus库: pip install cerberus # 安装cerberus库 -- Anaconda 环境下安装 …

非成对意象翻译中的内容制约范式再思考

Rethinking the Paradigm of Content Constraints in Unpaired Image-to-Image Translation 非成对意象翻译中的内容制约范式再思考 Xiuding Cai1 2, Yaoyao Zhu1 2, Dong Miao1 2, Linjie Fu1 2, Yu Yao1 2 蔡秀定 1 2 、朱瑶瑶 1 2 、苗东 1 2 、付林杰 1 2 、余瑶 1 2 Corre…

什么是直接内存(NIO)

直接内存不受 JVM 内存回收管理,是虚拟机的系统内存,常见于 NIO 操作时,用于数据 缓冲区,分配回收成本较高,但读写性能高,不受 JVM 内存回收管理。 举例 当上传一个较大文件(200M)…

模版方法详解

模板方法模式 1 概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相…

RT-Thread中使用Mqtt

环境: 开发板:Panduola(stm32L475) KEIL5 开发环境 rtthread 4.0.3内核 使用ENV 配置Rtt MQTT 1.MQTT介绍 ​ 客户端 Client 使用MQTT的程序或设备。客户端总是通过网络连接到服务端。它可以发布应用消息给其它相关的客户端。订…

Python代码:三、读入字符串

1、题目 从变量输出开始。请使用input函数读入一个字符串,然后将其输出。 2、代码 import sys ainput() print(a) 3、在sublime运行的结果

客观需求验证的常见5大步骤(实施版)

我们在挖掘用户需求时,往往容易犯伪需求或需求错位等问题,因此需要进行客观需求验证。通过客观的验证,我们可以有效减少主观判断误差问题,确保需求的准确性,从而降低需求变更和项目风险的概率,减少开发成本…

intel三年来首次大更新竟然倒吸牙膏,线程数砍掉25%!

每年科技圈最热闹的几个话题,无非是几大科技公司发布新的产品,那这其中必然有核心巨头 intel 的身影。 据外媒 Benchlife 披露,英特尔计划在其 Arrow Lake-S 架构 Core Ultra 200 台式机 CPU 系列中推出共计 21 款 CPU。 这是 intel 首次在桌…

白酒:酒精度数对白酒风味的影响与品鉴技巧

云仓酒庄豪迈白酒作为品质的白酒品牌,其酒精度数对白酒风味的影响与品鉴技巧是品鉴爱好者关注的重点。酒精度数作为衡量白酒质量的一项重要指标,不仅决定了白酒的口感和风格,更在一定程度上体现了白酒的品质和价值。本文将探讨酒精度数对云仓…

Jmeter中线程组介绍

1.线程数的意义 Jmeter采用了线程来模拟用户,即1个线程代表1个用户,线程可以简单理解为计算机处理任务时的一个具体执行人。 一个任务可以由多个人(线程)共同完成,也可以由一个人(线程)来完成&a…

WebLogic SSL应用

SSL 安全套接字层(SSL)是通过在客户端和Web服务器端之间进行身份验证,并对双方交换的数据进行加密,从而提供安全连接。 验证类型: 单向:客户端验证Web服务器端证书 双向:客户端验证Web服务器证书, Web服务器验证客户端证书 Weblogic Server12c 支持 SSL 3.0 和 TLS1.0 …

智能防疫电梯模拟控制系统设计-设计说明书

设计摘要: 本设计是基于单片机的智能防疫电梯模拟控制系统,主要实现了多项功能。首先,系统进行无接触测温,如果温度正常则可以启动电梯运行,如果温度异常则电梯会报警提示有乘客体温异常,电梯不会运行。其…

Java | Leetcode Java题解之第88题合并两个有序数组

题目: 题解: class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int p1 m - 1, p2 n - 1;int tail m n - 1;int cur;while (p1 > 0 || p2 > 0) {if (p1 -1) {cur nums2[p2--];} else if (p2 -1) {cur nums1[p…

使用单目相机前后帧特征点匹配进行3D深度估计的方法

在计算机视觉和机器人领域,三维空间感知是实现环境理解和交互的核心技术之一。特别是在资源受限的场合,使用针孔模型的单目相机进行深度估计成为了一种既经济又实用的解决方案。单目深度估计技术依赖于从连续视频帧中提取和匹配特征点,以估计…