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

news2024/9/22 21:22:02

        大家好,在软件开发的世界中,共享和重用代码是至关重要的。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.coloradmin.cn/o/1702049.html

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

相关文章

函数调用时长的关键点:揭秘参数位置的秘密

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、默认参数的秘密 示例代码 二、关键字参数与位置参数的舞蹈 示例代码 总结 一、默认参…

如何编辑 PDF 中的文本

使用 PDF 格式时最常见的挑战之一是弄清楚如何编辑 PDF 文档中的现有文本。该问题不仅影响新手&#xff0c;还影响多年来处理各种文档的专业人士。 PDF 格式专为处理数字纸张而设计。它以原始形式保留所有数据&#xff0c;例如表格、图章和签名。对于需要安全可靠地分发文档的…

香橙派 Kunpeng Pro 上手初体验

香橙派 Kunpeng Pro 上手初体验 目录 香橙派 Kunpeng Pro 上手初体验1.前言2.开箱3.开发板资源介绍硬件规格参数外观规格参数4.系统环境搭建系统镜像烧录ssh连接5.简单测试6.总结 1.前言 我很荣幸能收到了来自CSDN的测评邀请&#xff0c;让我有机会对香橙派最新推出的Kunpeng …

深度学习实战-yolox训练ExDark数据集所遇到的错误合集

跳转深度学习实战-yolox训练ExDark数据集(附全过程代码,超详细教程,无坑!) 一、 训练时出现ap为零 情况1.数据集没导进去 修改exps/example/yolox_voc/yolox_voc_s.py 当然由于image_sets只有一个元素因此修改yolox/data/datasets/voc.py 情况2.iou设置过高 修改yolo…

InteractiveGraph图谱中vue项目中如何使用

InteractiveGraph图谱中vue项目中如何使用 一、下载js和css和字体二、vue2.0项目中引用三、grap组件 一、下载js和css和字体 //在这里面找 https://github.com/grapheco/InteractiveGraph/blob/master/dist/examples/example1.html二、vue2.0项目中引用 //main.js中全局引入$ …

Pytorch深度学习实践笔记8(b站刘二大人)

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;pytorch深度学习 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

新窃密软件 NodeStealer 可以窃取所有浏览器 Cookie

Netskope 的研究人员正在跟踪一个使用恶意 Python 脚本窃取 Facebook 用户凭据与浏览器数据的攻击行动。攻击针对 Facebook 企业账户&#xff0c;包含虚假 Facebook 消息并带有恶意文件。攻击的受害者主要集中在南欧与北美&#xff0c;以制造业和技术服务行业为主。 2023 年 1 …

二维前缀和[模版]

题目链接 题目: 分析: 求二维数组的区间和问题, 可以使用二维前缀和算法注意: 下标从1开始计数第一步: 预处理出来一个前缀和矩阵dp[i][j] 表示: 从[1,1] 位置到[i,j] 位置, 这段区间里面所有元素的和 dp[i][j] 就等于ABCD, A好求, 就是dp[i-1][j-1], 但BC不好求, 所以我们AB…

D - Permutation Subsequence(AtCoder Beginner Contest 352)

题目链接: D - Permutation Subsequence (atcoder.jp) 题目大意&#xff1a; 分析&#xff1a; 相对于是记录一下每个数的位置 然后再长度为k的区间进行移动 然后看最大的pos和最小的pos的最小值是多少 有点类似于滑动窗口 用到了java里面的 TreeSet和Map TreeSet存的是数…

删除edge浏览器文本框储存记录值以及关闭自动填充

当我们点击输入框时总会出现许多以前输入过的信息。 一、删除edge浏览器文本框储存记录值 1、首先按下↓键选中你想删除的信息 二、关闭自动填充。 1、在地址栏输入edge://wallet/settings跳转到以下界面 2、往下滑找到 全部取消即可

区块链技术引领:Web3时代的新网络革命

随着区块链技术的快速发展和不断成熟&#xff0c;人们已经开始意识到它所带来的潜在影响&#xff0c;尤其是在构建一个更加去中心化、安全和透明的互联网时。这个新的互联网时代被称为Web3&#xff0c;它将不再受制于传统的中心化平台&#xff0c;而是更多地依赖于去中心化的网…

水电站泄水预警广播系统解决方案

一、背景 随着水电站不断发展&#xff0c;泄水预警成为确保周边地区安全的重要环节。为了有效应对泄水事件&#xff0c;提高预警效率&#xff0c;本方案提出建设水电站泄水预警广播系统。该系统通过先进的技术手段&#xff0c;实现快速、准确的泄水预警信息传达&#xff0c;保…

产品推荐-光学镜片镀膜自动上下料设备

随着现代化工业生产的浪潮&#xff0c;智能化和自动化已成为工业发展的必然趋势。在精密制造领域&#xff0c;高精度和高效率更是工艺流程中不可或缺的要素。为满足这一需求&#xff0c;富唯推出了引领行业潮流的智能设备——富唯智能镀膜上下料设备。 一、多功能操作&#xff…

spring suite gitlab使用手册

一、gitlab介绍 GitLab是一个功能丰富的开源代码管理平台&#xff0c;基于Git进行版本控制&#xff0c;并提供了一系列用于团队协作、项目管理、持续集成/持续部署&#xff08;CI/CD&#xff09;等工具。以下是关于GitLab的详细介绍&#xff1a; 基础信息&#xff1a; GitLab…

Text Control 控件 中 Service Pack 3:MailMerge 支持 SVG 图像

图像的合并方式与报告模板中的合并字段相同。占位符在设计时添加&#xff0c;并与文件、数据库或内存中的数据合并。可以将图像对象添加到具有指定名称的模板中。数据列必须包含字节数组形式的二进制图像数据、System.Drawing.Image 类型的对象、文件名、十六进制或 Base64 编码…

Android Compose 七:常用组件 Image

1 基本使用 Image(painter painterResource(id R.drawable.ic_wang_lufei), contentDescription "" ) // 图片Spacer(modifier Modifier.height(20.dp))Image(imageVector ImageVector.vectorResource(id R.drawable.ic_android_black_24dp), contentDescript…

Python中的SSH、SFTP和FTP操作详解

大家好&#xff0c;在网络编程中&#xff0c;安全地连接到远程服务器并执行操作是一项常见任务。Python 提供了多种库来实现这一目标&#xff0c;其中 Paramiko 是一个功能强大的工具&#xff0c;可以轻松地在 Python 中执行 SSH、SFTP 和 FTP 操作。本文将介绍如何使用 Parami…

动态规划-二维费用的背包问题

文章目录 1. 一和零&#xff08;474&#xff09;2. 盈利计划&#xff08;879&#xff09; 1. 一和零&#xff08;474&#xff09; 题目描述&#xff1a; 状态表示&#xff1a; 我们之前的01背包问题以及完全背包问题都是一维的&#xff0c;因为我们只有一个要求或者说是限制那…

IT技术 | 电脑蓝屏修复记录DRIVER_IRQL_NOT_LESS_OR_EQUAL

我的台式机是iMac 2015年的&#xff0c;硬盘是机械的&#xff0c;时间久了运行越来越慢。后来对苹果系统失去了兴趣&#xff0c;想换回windows&#xff0c;且想换固态硬盘&#xff0c;就使用winToGo 搞了双系统&#xff0c;在USB外接移动固态硬盘上安装了win10系统。 最近&…