快速用 uv 模拟发布一个 Python 依赖包到 TestPyPI 上,以及常用命令
目录
- 1. uv 介绍
- 2. uv 安装(Windows版)
- 3. 快速模拟一个要发布到TestPyPI上的依赖包,scoful-test-lib
- 3.1 初始化 uv init
- 3.2 进入scoful-test-lib
- 3.3 修改pyproject.toml
- 3.4 使用命令 uv sync
- 3.5. 使用命令 uv lock
- 3.6 使用命令 uv build
- 3.7 获取testPyPI的token
- 3.8 发布到 testPyPI
- 3.9 验证,import scoful-test-lib
- 2. uv 常用命令
- 2.1 初始化项目 uv init xxx
- 2.2 构建虚拟环境 uv sync
- 2.3 更新共用版本lock文件 uv lock
- 2.4 增加依赖 uv add xxx
- 2.5 运行 uv run xxx.py
- 2.6 在虚拟环境快速调用工具 uvx xxx
- 2.7 详细官方文档地址
1. uv 介绍
-
简单说,uv 是一个用 Rust 编写的超快 Python 包管理和项目管理工具,旨在替代 pip、poetry、virtualenv 等传统工具。
-
换句话说,又是一个轮子,但是这个轮子用起来有点意思。首先,可能是因为太新了,还没被伟大的GFW识别到,也就是说,不用配置镜像源
-
然后,按官方的说法,下载安装包速度特别快,还贴了个图,看对比的确提升好大
-
最后,提供了一站式功能,从初始化项目,增加依赖,虚拟环境管理,Python版本管理,基础的运行Python单文件,工具管理等
-
个人用起来挺有意思的,不过才用了2-3天,新东西最大的问题就是更新快,但是网上的教程很多都滞后,甚至连AI都不例外,问它问题都是错误答案,最好的还是啃官方文档,这篇文章的目的就是记录一下这几天摄入的知识,防止遗忘
2. uv 安装(Windows版)
打开一个powershell,运行下面的命令:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
3. 快速模拟一个要发布到TestPyPI上的依赖包,scoful-test-lib
3.1 初始化 uv init
使用命令:uv init --lib scoful-test-lib
,这里注意了,加--lib
是因为需要Python依赖包的目录结构,也就是说要有__init__.py,如果是普通的项目,不需要加--lib
文件目录结构如下:
3.2 进入scoful-test-lib
使用命令:cd scoful-test-lib
,其中几个关键文件内容如下:
# __init__.py
# 注意这个hello函数,后面会引入调用一下
def hello() -> str:return "`Hello from scoful-test-lib!`"
# pyproject.toml
[project]
name = "scoful-test-lib" # 包名
version = "0.1.0" # 版本
description = "Add your description here"
readme = "README.md"
authors = []
requires-python = ">=3.10"
dependencies = [] # 添加的依赖[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
3.3 修改pyproject.toml
PS:发布到测试环境才需要
在pyproject.toml的最后追加,这个配置的意思是发布的时候可以指定发布到pypi的测试环境,不然默认就发到pypi的生产环境去了:
[[tool.uv.index]]
name = "testpypi"
url = "https://test.pypi.org/simple/"
publish-url = "https://test.pypi.org/legacy/"
explicit = true
3.4 使用命令 uv sync
这个命令的意思其实是,按uv.lock安装依赖并创建虚拟环境,虽然是新项目,也可以直接使用
3.5. 使用命令 uv lock
这个命令的意思是,基于pyproject.toml生成精确锁文件
3.6 使用命令 uv build
这个命令的意思是,生成编译后的文件,也就是要上传到TestPyPI上的文件
文件结构如下:
3.7 获取testPyPI的token
- 在 TestPyPI 注册一个账户
- 获取token需要绑定2FA,记得复制备份一下
3.8 发布到 testPyPI
- 执行命令:
uv publish --index testpypi
,后面这个index就是指定发布到测试环境的意思 - 回车后会提示输入账号命名,先输入:
__token__
,默认的 - password就输入上面获取的testPyPI的token
3.9 验证,import scoful-test-lib
-
打开这个,能看到已经发布成功了
-
使用
uv init test-install
,再新建一个项目,没有加–lib,看看文件结构,跟加了的不一样
-
再用
uv add --default-index https://test.pypi.org/simple/ scoful-test-lib
,把上面发布的scoful-test-lib
依赖加到test-install
项目里,可以在pyproject.toml里看到添加的依赖
# pyproject.toml
[project]
name = "test-install"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.10"
dependencies = ["scoful-test-lib>=0.1.0", # 这就是上面发布的scoful-test-lib,已经添加成功
][[tool.uv.index]]
url = "https://test.pypi.org/simple/"
default = true
- 修改
main.py
,引入scoful-test-lib
,内容如下
from scoful_test_lib import hello
# 细心的人会留意到这里,为啥包是scoful-test-lib,引入是scoful_test_lib,这是Python的设计,必须这样才不会报错def main():print("Hello from test-install!")print(hello())if __name__ == "__main__":main()
uv sync
一下- 直接运行
uv run main.py
,结果就是先打印Hello from test-install!
,再打印依赖包里的Hello from scoful-test-lib!
,成功! - 这就把整个链路打通了!
2. uv 常用命令
2.1 初始化项目 uv init xxx
如果是初始化包,uv init --lib xxx
2.2 构建虚拟环境 uv sync
uv 会自动检测虚拟环境状态,确保依赖与锁文件完全同步,避免手动激活环境的麻烦
2.3 更新共用版本lock文件 uv lock
执行uv lock会生成uv.lock,这个文件记录了所有依赖的精确版本和哈希值,确保团队成员或不同环境的安装结果完全一致
2.4 增加依赖 uv add xxx
比如:uv add requests
, uv add requests==2.31.0
,可指定版本
比如:uv add -r requirements.txt
,批量增加依赖
2.5 运行 uv run xxx.py
2.6 在虚拟环境快速调用工具 uvx xxx
这个命令不会污染本地环境,自建了一个虚拟环境来运行,非常好用
例子:uvx pycowsay 'scoful is awesome'
-------------------
< 'scoful is awesome' >-------------------\ ^__^\ (oo)\_______(__)\ )\/\||----w ||| ||
2.7 详细官方文档地址
https://docs.astral.sh/uv/reference/cli/
over, enjoy!!!
如对您有帮助,感谢投喂!
相关文章:

快速用 uv 模拟发布一个 Python 依赖包到 TestPyPI 上,以及常用命令
目录 1. uv 介绍2. uv 安装(Windows版)3. 快速模拟一个要发布到TestPyPI上的依赖包,scoful-test-lib3.1 初始化 uv init3.2 进入scoful-test-lib3.3 修改pyproject.toml3.4 使用命令 uv sync3.5. 使用命令 uv lock3.6 使用命令 uv build3.7 获…...
Keil调试模式下,排查程序崩溃简述
在Keil调试模式下,若程序崩溃,可以通过以下步骤来定位崩溃的位置: 一、查看调用栈(Call Stack) 打开调用栈窗口: 在Keil的调试模式下,点击菜单栏的“View” -> “Call Stack Window”&…...

Python读取PDF:文本、图片与文档属性
在日常的数据采集、文档归档与信息挖掘过程中,PDF格式因其版式固定、内容稳定而被广泛使用。Python 开发者若希望实现 PDF 内容的自动化提取,选择一个易用且功能完善的库至关重要。本文将介绍如何用Python实现 PDF文本读取、图片提取 以及 文档属性读取 …...

基于SpringBoot+Vue2的租房售房二手房小程序
角色: 管理员、房东、租客/买家 技术: springbootvue2mysqlmybatispagehelper 核心功能: 租房售房小程序是一个专注于房屋租赁和销售的综合性平台,基于SpringBootVue2MySQLMyBatisPageHelper技术栈开发,为用户提供…...
数学:学好数学需要对数系进行系统的对比和分析
数系范围:自然数通常是从 0 或 1 开始,用于计数的数,然后整数包括正负和零,有理数是分数,实数包括无理数,复数引入虚数单位。 运算性质:比如是否满足加法、乘法的封闭性,是否有逆元,是否有序,完备性等。 结构对比:比如代数结构,比如自然数是半群,整数是环,有理…...

基于本地LLM与MCP架构构建AI智能体全指南
一、AI智能体开发的新范式 随着人工智能技术的快速演进,AI智能体(AI Agents)正成为连接技术创新与实际应用的核心载体。从智能家居的温控系统到复杂的金融风控决策,AI智能体通过感知环境并执行目标导向的行为,正在重塑…...

AT2659_GNSS低噪声放大器芯片
AT2659 射频放大器在SiGe工艺平台上实现23dB增益与0.71dB噪声系数的优异组合,专为BDS/GPS/GLONASS/GALILEO多模导航系统优化设计。其宽电压适应能力(1.4-3.6V)与低至4.4mA的功耗特性,配合1.5mm1mm0.55mm的6脚DFN封装(R…...
跨平台游戏引擎 Axmol-2.6.1 发布
Axmol 2.6.1 版本是一个以错误修复和功能改进为主的次要LTS长期支持版本 🙏感谢所有贡献者及财务赞助者:scorewarrior、peterkharitonov、duong、thienphuoc、bingsoo、asnagni、paulocoutinhox、DelinWorks 错误修复 修复Android armv7架构崩溃问题&…...

MADlib —— 基于 SQL 的数据挖掘解决方案(4)—— 数据类型之矩阵
目录 一、矩阵定义 二、MADlib 中的矩阵表示 1. 稠密 2. 稀疏 三、MADlib 中的矩阵运算函数 1. 矩阵操作函数分类 (1)表示函数 (2)计算函数 (3)提取函数 (4)归约函数&…...

ServBay 1.13.0 更新,新增第三方反向代理/内网穿透
ServBay 作为一款简化本地开发环境搭建与管理的强大工具,致力于打造一个开箱即用、稳定可靠的本地开发平台,让用户专注于代码编写,提升开发效率。 ServBay 1.13.0 正式发布!本次更新聚焦于提升本地开发项目的外部可访问性、增强国…...
C#对象扩展方法:提升对象操作的灵活性与效率
C#对象扩展方法:提升对象操作的灵活性与效率 在C#编程中,我们经常需要对对象进行各种操作,如获取对象属性信息、转换对象格式、复制对象等。通过扩展方法,我们可以为现有类型添加新的功能,而无需修改原始类型的代码。…...
Python爬虫爬取天猫商品数据,详细教程【Python经典实战项目】
Python爬取天猫商品数据详细教程 一、前期准备 1. 环境配置 Python环境:确保已安装Python 3.x版本,建议使用Anaconda或直接从Python官网下载安装。第三方库: requests:用于发送HTTP请求。BeautifulSoup:用于解析HTM…...
Oracle 的 SEC_CASE_SENSITIVE_LOGON 参数
Oracle 的SEC_CASE_SENSITIVE_LOGON 参数 关键版本信息 SEC_CASE_SENSITIVE_LOGON 参数在以下版本中被弃用: Oracle 12c Release 1 (12.1): 该参数首次被标记为"过时"(obsolete)但依然保持功能有效 Oracle 18c/19c 及更高版本: …...

Docker构建自定义的镜像
构建自定义的 Docker 镜像是 Docker 使用中的核心操作之一。通过自定义镜像,你可以将应用程序及其依赖环境打包成一个可移植的容器化镜像。以下是详细的步骤和注意事项: 1. 准备工作 在构建自定义镜像之前,你需要准备以下内容: D…...

【SSM】SpringMVC学习笔记8:拦截器
这篇学习笔记是Spring系列笔记的第8篇,该笔记是笔者在学习黑马程序员SSM框架教程课程期间的笔记,供自己和他人参考。 Spring学习笔记目录 笔记1:【SSM】Spring基础: IoC配置学习笔记-CSDN博客 对应黑马课程P1~P20的内容。 笔记2…...

井川里予瓜pdf完整版
井川里予瓜pdf完整版 下载链接: 链接:https://pan.quark.cn/s/c75455d6be60 在网红文化盛行的当下,井川里予无疑是一位备受瞩目的人物。这位2001年出生于广东湛江的姑娘,凭借独特风格在网络世界掀起波澜,其发展轨迹…...
UI自动化常见的一些问题解决方式
1、遇到元素无法定位的情况 解决方法:(1)手写css 先找到父级的唯一元素 (2)手写xpath、 (3)js在浏览器控制台去定位 控制台定位样例:(1)…...

基于 Zynq 平台的 EtherCAT 主站的软硬件协同设计
摘要: 针对工业自动化对控制能力和强实时性的需求,提出了一种基于 FPGA 的改进型 EtherCAT 硬件主站方案 。 该方案利用 Zynq-7000 平台,在 PL 端实现 FPGA 协议栈,以保证核心功能的高效执 行 。 基于 AXI4 总线设计…...

聊一聊 .NET在Linux下的IO多路复用select和epoll
一:背景 1. 讲故事 在windows平台上,相信很多人都知道.NET异步机制是借助了Windows自带的 IO完成端口 实现的异步交互,那在 Linux 下.NET 又是怎么玩的呢?主要还是传统的 select,poll,epoll 的IO多路复用…...

从零开始的嵌入式学习day33
网络编程及相关概念 UDP网络通信程序 UDP网络通信操作 一、网络编程及相关概念 1. 网络编程概念: 指通过计算机网络实现程序间通信的技术,涉及协议、套接字、数据传输等核心概念。常见的应用场景包括客户端-服务器模型、分布式系统、实时通信等。…...
ArcGIS Pro 3.4 二次开发 - 宗地
环境:ArcGIS Pro SDK 3.4 + .NET 8 文章目录 宗地1 宗地1.1 向地图添加宗地图层1.2 获取活动记录1.3 设置活动记录1.4 创建新记录1.5 将标准线要素复制到宗地类型1.6 将宗地线复制到宗地类型1.7 将要素分配给活动记录1.8 创建宗地种子1.9 构建地块1.10 重复地块1.11 设置地块为…...
前端面试准备-7
1.定义class的实现 //定义class class Person{//公有属性nameage 18//构造函数constructor(name){//构造函数内部的this实例化对象this.name name//动态添加属性(不推荐)this.food [🐂,🐎,🐏]}//公有方法sayHi(){c…...

黑马Java面试笔记之框架篇(Spring、SpringMvc、Springboot)
一. 单例bean Spring框架中的单例bean是线程安全的吗? Spring框架中的bean是单例的,可以在注解Scope()进行设置 singleton:bean在每一个Spring IOC容器中只有一个实例。prototype:一个bean的定义可以有多个实例 总结 二. AOP AOP称…...

全球IP归属地查询接口如何用C#进行调用?
一、什么是全球IP归属地查询接口 在全球化互联网时代,IP地址作为网络世界的地理位置标识,扮演着至关重要的角色。全球IP归属地查询接口通过解析IP地址,提供包括国家、省、市、区县和运营商在内的详细信息。 二、应用场景 1. 访问识别 全球…...

NumPy 比较、掩码与布尔逻辑
文章目录 比较、掩码与布尔逻辑示例:统计下雨天数作为通用函数(Ufuncs)的比较运算符使用布尔数组计数条目布尔运算符 布尔数组作为掩码使用关键字 and/or 与运算符 &/| 的区别 比较、掩码与布尔逻辑 本文介绍如何使用布尔掩码来检查和操…...

力扣HOT100之二分查找:35. 搜索插入位置
这道题属于是二分查找的入门题了,我依稀记得一些二分查找的编码要点,但是最后还是写出了一个死循环,无语(ˉ▽ˉ;)…又回去看了下自己当时的博客和卡哥的视频,这才发现自己分情况只分了两种,最后导致死循环…...

使用API有效率地管理Dynadot域名,查看域名市场中所售域名的详细信息
关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…...

IM即时通讯软件,构建企业局域网内安全协作
安全与权限:协同办公的企业级保障 在协同办公场景中,BeeWorks 将安全机制贯穿全流程。文件在局域网内传输与存储时均采用加密处理,企业网盘支持水印预览、离线文档权限回收等功能,防止敏感资料外泄;多人在线编辑文档时…...

VueScan:全能扫描,高清输出
在数字化办公和图像处理的领域,扫描仪扮演着不可或缺的角色。无论是文档的数字化存档、照片的高清复制,还是创意项目的素材采集,一款性能卓越、操作便捷的扫描软件能大幅提升工作效率和成果质量。VueScan正是这样一款集多功能于一身的扫描仪软…...

PyCharm项目和文件运行时使用conda环境的教程
打开【文件】—【新建项目】 按照下图配置环境 可以看到我这个项目里,报错“No module named modelscope” 点击终端,输入命令 #显示所有的conda环境 conda env list #选择需要激活的conda环境 conda activate XXX在终端中,执行pip install …...