从Python代码到pip包:打包Python项目

        大家好,在软件开发的世界中,共享和重用代码是至关重要的。Python社区为我们提供了丰富的资源,使得我们能够轻松地与他人分享我们的工作,并从他人的工作中受益。将代码打包成pip包(Python包管理器)是一种常见的方式,它使其他开发者能够轻松地安装、使用和扩展你的项目。无论你是为了分享你的工作,还是为了更好地管理项目依赖,打包成pip包都是一个值得学习的技能。在本文中,我们将探索如何将你的Python代码打包成pip包,并分享给其他人使用。

1、安装Python构建工具

首先,确保已经安装了Python的构建工具。

可以通过以下命令进行安装:

python3 -m pip install --upgrade build

这将会安装最新版本的Python构建工具,可以轻松地打包 Python 项目。 

2、进入到要打包的项目目录下

        在开始之前,我们需要进入到要打包的项目目录。确保项目目录中包含了一个名为pyproject.toml的文件。

下面展示目录结构:

cd gydev_base_adb/

3、修改配置文件 pyproject.toml

    pyproject.toml 文件是用来配置项目的打包信息的。在文件中,需要指定项目的名称、版本号、作者信息、描述以及其他一些相关信息。

下面是一个示例配置文件的内容:

# 用于定义项目的构建系统配置。
[build-system]
# 指定构建系统工具的要求。使用 "hatchling" 作为构建系统工具。
requires = ["hatchling"]
# 指定构建系统的后端实现。
build-backend = "hatchling.build"

# 项目相关的各种信息。
[project]
# 项目的名称。
name = "gydev-base-adb"
# 项目的版本号。
version = "1.0.0"
# 作者信息列表,包含作者的姓名和电子邮件。
authors = [
    { name = "zhangsan", email = "zhansgan@163.com" },
]
# 项目的描述。
description = "ADB操作包"
# 项目的 README 文件的名称。
readme = "README.md"
# 许可证信息,包含许可证文件的名称。
license = { file = "LICENSE" }
# 项目所需的 Python 版本。
requires-python = ">=3.6"
# 项目的分类器,用于指定项目的分类标签。例如编程语言、许可证、操作系统等。
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]
# 项目的依赖列表,指定其他项目或库的依赖关系。
dependencies = [
    "requests==2.13.0"
]

# 项目的相关网址
[project.urls]
# 项目的主页网址。
"Homepage" = "http://xxx.xxx.xxx"

在配置文件中,需要根据你的项目情况修改相应的字段,比如项目名称、版本号、作者信息等。 

4、执行打包

配置文件修改完成后,我们就可以开始执行打包操作了。

在项目目录下执行以下命令:

python3 -m build

这将会根据pyproject.toml文件中的配置信息,将项目打包成pip包,并生成dist目录,里面包含了.tar.gz.whl两种类型的包。如下图所示:

5、配置私有仓库信息

        如果想将pip包上传到私有仓库中,需要配置私有仓库信息。首先,在系统用户的主目录下创建一个名为.pypirc的文件。

在系统用户的主目录下创建文件.pypirc

touch ~/.pypirc

然后编辑.pypirc文件

vim ~/.pypirc

文件中写入以下内容并保存:

[distutils]
index-servers=pypi-private

[pypi-private]
repository = http://xxx.xxx.xxx/repository/pypi/ # 私有仓库地址
username = <YourUaserName> # 用户名
password = <YourPassword> # 密码

        在配置文件中,需要替换repositoryusernamepassword字段为你私有仓库的地址以及你的用户名和密码。 

6、上传到私有仓库

配置完成后,我们可以开始将打包好的pip包上传到私有仓库中了。

首先,我们需要安装上传工具twine

pip install twine

然后,执行以下命令上传pip包:

cd gydev_base_adb/
twine upload --repository pypi-private  ./dist/gydev-base-adb-1.0.0.tar.gz

或者直接上传所有类似的pip文件:

twine upload --repository pypi-private  ./dist/*

上传成功后,在私有仓库中可以查询到对应的pip包。

 

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

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

相关文章

SpringCloudAlibaba:6.2RocketMQ的普通消息的使用

简介 普通消息也叫并发消息&#xff0c;是发送效率最高&#xff0c;使用最多的一种 依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSch…

Web上机:JSP+Servlet+JDBC的交互流程

目录 需求与设计 基础需求&#xff1a; 项目结构&#xff1a; 项目逻辑&#xff1a; 运行图示&#xff1a; 代码实现 Login.jsp InsertServlet SelectServlet Table.jsp user mysql表结构 Web开发技术迭代速度日新月异&#xff0c;对于技术的更新往往是基于底层一…

Kubernetes核心组件Ingress详解

1.1 Ingress介绍 Kubernetes 集群中&#xff0c;服务&#xff08;Service&#xff09;是一种抽象&#xff0c;它定义了一种访问 Pod 的方式&#xff0c;无论这些 Pod 如何变化&#xff0c;服务都保持不变。服务可以被映射到一个静态的 IP 地址&#xff08;ClusterIP&#xff09…

element ui 的el-input输入一个字后失去焦点,需重新点击输入框才能再次输入!

解决方案&#xff1a; 我是form表单嵌套表格&#xff0c;里面的el-input输入框&#xff0c;输入第一个值的时候会突然失去焦点&#xff0c;需要再次点击输入框才能正常输入&#xff0c;原因是table的key值&#xff0c;需要改成正常的index即可&#xff0c;如果你是循环的&…

精益生产培训公司:为企业量身定制的精益解决方案——张驰咨询

在当今竞争激烈的市场环境下&#xff0c;企业要想持续发展&#xff0c;就必须不断寻求转型升级的途径。精益生产作为一种高效的生产管理方式&#xff0c;已经成为众多企业追求的目标。而精益生产培训公司&#xff0c;正是帮助企业实现这一目标的重要力量。 一、精益生产培训的…

Kubernetes可视化界面之DashBoard

1.1 DashBoard Kubernetes Dashboard 是 Kubernetes 集群的一个开箱即用的 Web UI&#xff0c;提供了一种图形化的方式来管理和监视 Kubernetes 集群中的资源。它允许用户直接在浏览器中执行许多常见的 Kubernetes 管理任务&#xff0c;如部署应用、监控应用状态、执行故障排查…

WPF中CommandParameter用法

1. 界面样式 2. XAML中代码部分 <ButtonGrid.Row"0"Grid.Column"1"Command"{Binding BtnClick_Number}"CommandParameter"7"Content"7"Style"{StaticResource BtnStyle_Num}" /> <ButtonGrid.Row"…

产品经理-需求收集(二)

1. 什么是需求 指在一定的时期中&#xff0c;一定场景中&#xff0c;无论是心理上还是生理上的&#xff0c;用户有着某种“需要”&#xff0c;这种“需要”用户自己不一定知道的&#xff0c;有了这种“需要”后用户就有做某件事情的动机并促使达到其某种目的&#xff0c;这也就…

最新dofm飞行棋高阶版,分享情侣版飞行棋高级版和终极版

阿星今天要给大家带来一款甜蜜蜜的小游戏——情侣飞行棋。这不是普通的飞行棋&#xff0c;而是专为情侣设计的&#xff0c;让你们的感情在游戏中升温&#xff0c;擦出更多爱的火花。 准备好了吗&#xff1f;跟着阿星一起&#xff0c;咱们来看看这款软件的魅力所在&#xff01;…

设置虚拟机为静态IP

为什么需要设置静态IP&#xff1a;有时候我们在练习项目的时候&#xff0c;明明已经连接好了虚拟机的ip&#xff0c;某一天突然连接不上了&#xff0c;通过ifconfig命令查看发现虚拟机的ip发生了变化&#xff0c;导致之前做的内容都需要重新布置&#xff0c; 一、设置静态IP …

Python 全栈体系【四阶】(五十三)

第五章 深度学习 十二、光学字符识别&#xff08;OCR&#xff09; 2. 文字检测技术 2.3 DB&#xff08;2020&#xff09; DB全称是Differentiable Binarization&#xff08;可微分二值化&#xff09;&#xff0c;是近年提出的利用图像分割方法进行文字检测的模型。前文所提…

分布式理论--BASE

目录 是什么BASE 与 CAP&#xff0c;ACID 的区别BASE 和 Paxos 类共识算法的区别相关问题 是什么 BASE 理论是对 CAP 理论的进一步扩展主要强调在分布式系统中&#xff0c;为了获得更高的可用性和性能&#xff0c;可以放宽对一致性的要求&#xff0c;是对 CAP 中 AP 方案的一个…

QT 掩码 InputMask

字符规则 如IP输入框可以简单设置为 IP->setInputMask("000.000.000.000");就会有80%的相似度 另外设置掩码用 ui.edtIP->setInputMask(“这里面是字符格式”); ★消除已有的掩码用 ui.edtIP->setInputMask(""); 双引号之间没有空…

数据挖掘实战-基于余弦相似度的印度美食推荐系统

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Three.js——二维平面、二维圆、自定义二维图形、立方体、球体、圆柱体、圆环、扭结、多面体、文字

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

外汇天眼:野村证券和Laser Digital与GMO互联网集团合作发行日元和美元稳定币

野村控股和Laser Digital将与GMO互联网集团合作&#xff0c;在日本探索发行日元和美元稳定币。GMO互联网集团的美国子公司GMO-Z.com Trust Company, Inc. 在纽约州金融服务部的监管框架下&#xff0c;在以太坊、恒星币和Solana等主要区块链上发行稳定币。GMO-Z.com Trust Compa…

三坐标测量机在汽车零部件质量控制中的应用

高质量的零部件能够确保汽车的性能达到设计标准&#xff0c;包括动力性能、燃油效率、操控稳定性等&#xff0c;从而提供更好的驾驶体验&#xff0c;建立消费者对汽车品牌的信任&#xff1b;也推动了汽车行业的技术创新&#xff0c;制造商不断研发新材料、新工艺&#xff0c;以…

驾考学法减分拍照搜题模拟考试小程序开发

驾考学法减分拍照搜题模拟考试小程序开发 项目介绍 驾考搜题&#xff0c;一款专为驾考学员设计的智能搜题助手&#xff0c;集合了海量题库与实战模拟&#xff0c;助力学员快速掌握驾考知识&#xff0c;轻松应对各类考试。 主要功能特点 智能搜题 通过关键词、拍照搜索&#xf…

Python爬虫实战(实战篇)—16获取【百度热搜】数据—写入Ecel(附完整代码)

文章目录 专栏导读背景结果预览1、爬取页面分析2、通过返回数据发现适合利用lxmlxpath3、继续分析【小说榜、电影榜、电视剧榜、汽车榜、游戏榜】4、完整代码总结 专栏导读 &#x1f525;&#x1f525;本文已收录于《Python基础篇爬虫》 &#x1f251;&#x1f251;本专栏专门…

【数据结构】图解红黑树以及代码实现

目录 一、相关概念 性质 二、图解 1、插入操作 2、parent在左边情况1&#xff1a;cur为红色节点parent也是红色节点、uncle也为红色节点 3、parent在左边情况2&#xff1a;cur为红色节点parent也是红色节点、uncle为黑色或者是空&#xff0c;cur是parent的left 4、parent…