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

news2024/11/14 15:49:03

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的小技能就过完了,如果有什么问题欢迎在评论区中留言。

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

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

相关文章

生信人写程序1. Perl语言模板及配置

生物信息领域常用语言 个人认为:是否能熟悉使用Shell(项目流程搭建)R(数据统计与可视化)Perl/Python/Java…(胶水语言,数据格式转换,软件间衔接)三门语言是一位合格生物信息工程师的标准。 生物信息常用语言非常广泛,我常用的有…

IT行业的现状和未来发展趋势:技术创新、市场需求、人才培养、政策法规和社会影响

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

SOLIDWORKS 2024云服务新功能

一、简单的分享一下,在线观看,轻松标记 在达索系统SOLIDWORKS 2024云服务中,您只需在达索系统SOLIDWORKS中点击按钮,就可以将当前的设计分享给其他人,无论是客户、供应商还是团队内部成员。共享的用户只要打开浏览器里…

volatile能保证原子性吗?为什么?

一、问题解析 volatile通常被比喻成”轻量级的synchronized“,也是Java并发编程中比较重要的一个关键字。和synchronized不同,volatile是一个变量修饰符,只能用来修饰变量。无法修饰方法及代码块等。 volatile的用法比较简单,只需…

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

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

【嵌入式大赛应用赛道】机械手臂

电机 进步电机:它的转动是以确定的步数进行的,只要计算好脉冲数量和频率,就可以准确预测和控制电机的转动角度、速度以及停止的位置 伺服电机:将输入的电信号(如电压或电流指令)转换成轴上的精确旋转运动…

突发!超60篇被标记!Elsevier旗下顶刊,“On Hold”长达10个月!再次沦陷“新”风波!

【欧亚科睿学术】 近日,中科院老牌TOP期刊Chemosphere对超过60篇论文发布了关注声明,原因是正在调查可能存在的编辑利益冲突、作者身份异常以及同行评审和引用操纵问题。 图片来源:期刊官网 2024年4月11日,该期刊在线发布的一份…

WT99C262-SG LoRa开发板使用教程

WT99C262-SG模块是全新一代的Wi-FiBLELoRa无线扩频模块,基于启明云端WTLRC262-SG系列模组设计开发的新一代LoRa扩频芯片方案设计的无线串口模块。具有多种传输方式,LoRa扩频技术,且模组大部分管脚均已引出至两侧排针,开发人员可根…

msvcp140_codecvt_ids.dll找不到要如何处理?简单的修复方法分享

在使用Windows操作系统时,用户可能会遇到“无法找到msvcp140_codecvt_ids.dll”这一错误信息。该提示通常发生在启动某些应用程序时,提示失去了关键的动态链接库文件(DLL)依赖。此DLL文件属于Microsoft Visual C Redistributable软…

二进制搭建k8s

实验环境: k8s集群master01:192.168.1.11 k8s集群master02:192.168.1.22 master虚拟ip:192.168.1.100 k8s集群node01:192.168.1.33 k8s集群node01:192.168.1.44 nginxkeepalive01(master):192.168.1.55 nginxkeepalive02&a…

纯血鸿蒙APP实战开发——Navigation页面跳转对象传递案例

介绍 本示例主要介绍在使用Navigation实现页面跳转时,如何在跳转页面得到转入页面传的类对象的方法。实现过程中使用了第三方插件class-transformer,传递对象经过该插件的plainToClass方法转换后可以直接调用对象的方法, 效果图预览 使用说…

CIBERSORTx网页版报错

解决方式:bulk RNA-seq不能包含NA值

大白话!大模型(LLMs)私有化的三种方式:Prompts、Embeddings、Fine-tuning

私有化大模型的三种方式 随着我们使用大模型的深入呢,我们会发现这样一个现象,我们正常情况下问大模型的问题,会得到一个非常普适的回答,就是大模型会根据自己的训练的这个过往的一些知识的积累,然后告诉我们他认为最…

海外盲盒系统开发,开拓全球盲盒市场

盲盒作为经久不衰的行业,市场发展空间不断扩大。近几年,盲盒出海成为了我国盲盒发展的新赛道,各个盲盒企业更是纷纷摩拳擦掌,开拓海外市场,我国盲盒正在全世界范围内实现多元化发展。此外,我国是世界上有名…

光伏行业该如何起步?

随着全球对可再生能源的需求日益增长,光伏行业作为其中的佼佼者,正迎来前所未有的发展机遇。然而,对于新进入者或希望在这一领域有所建树的企业来说,如何起步并稳健发展是一个值得深思的问题。以下是一些关于光伏行业起步的建议。…

AniPortrait详细讲解以及完整搭建流程(有问题留言)

AniPortrait是一款真实感人像动画的音频驱动合成的AI程序。 下面是它的github源码: GitHub - Zejun-Yang/AniPortrait: AniPortrait: Audio-Driven Synthesis of Photorealistic Portrait AnimationAniPortrait: Audio-Driven Synthesis of Photorealistic Portrait Animati…

[Vs2019报错找不到服务实例的解决方案]

计算机疑难杂症记录与分享004 Vs2019报错找不到服务实例的解决方案1、问题现象1.1、问题一:打开vs2019打开项目工程文件,直接弹窗报错1.2、问题二:能打开工程了。识别项目文件不兼容问题。 2、问题原因3、问题一的解决3.1、方法一(亲测无效)3…

Java的response返回Json格式

问题 今天开发过程中,写了个拦截器,对于所以请求进行一个token的工作,对于不合标准的token返回错误,在网上找了个拦截器进行二次开发。 package com.maizhiyu.yzt.handle;import org.springframework.beans.factory.annotation.…

Python数据分析常用模块的介绍与使用

Python数据分析模块 前言一、Numpy模块Numpy介绍Numpy的使用Numpy生成数组ndarrayarray生成数组arange生成数组random生成数组其他示例 关于randint示例1示例2 关于rand Numpy数组统计方法示例 二、Pandas模块pandas介绍Series示例 DataFrame示例 三、其他模块Matplotlib/Seabo…