当前位置: 首页 > news >正文

vscode uv 发布一个python包:编辑、调试与相对路径导包

背景

最近一直在使用uv做python包管理,用起来很方便。
尤其是在代码上传到github的时候,pyproject.toml 会显示出当前项目依赖的python包。这样在把代码下载到本地之后,直接uv sync就可以很方便地恢复出python环境。

uv 除了有上述优点,直接通过 uv build 就可以把当前代码给打包成whl文件,上传到pypi,或者自己本地安装。

下述用一个例子介绍python打包。

项目详情

这是 vector_pkag 项目结构。

vector_pkag
├── pyproject.toml
├── README.md
├── src
│   └── vector_pkag
│       ├── init_vector.py
│       ├── sum_vector.py
│       └── vector_base.py
└── tests└── test_vector.py

整个项目完整的代码,已经上传到githun: https://github.com/JieShenAI/csdn/tree/main/25/08/vector_pkag

建议把包相关的代码代码都放到src目录下。init_vectorsum_vector是两个工具,里面实现的代码并不重要,只需要知道 vector_base调用了这两个工具就行。

vector_base.py的具体实现如下:

from dataclasses import dataclassfrom .init_vector import init_vector as init_v
from vector_pkag.sum_vector import sum_vector as sum_v@dataclass
class Vector:x : inty : intdef add(self, other):self.x += other.xself.y += other.ydef __repr__(self):return f"Vector({self.x}, {self.y})"def init_vector(self):return init_v(self)def sum_vector(self)->int:return sum_v(self) 

init_vectorsum_vector 在同一个目录下,采用两种不同的方式进行导包,是为了说明这两种方式都可以写。

from .init_vector import init_vector as init_v
from vector_pkag.sum_vector import sum_vector as sum_v

包的测试

我们的包的代码,都在src目录下,在这个包还没有发布的时候,需要对包内的模型写测试。
我们需要在vscode的 settings.json 文件中,添加上配置信息,实现把每个项目的根目录和src文件夹都添加到python path路径中。

这样就可以保证tests内部的测试代码与包发布后的代码保持一致。

test/test_vectory.py的实现如下:
即使内部的文件夹中,也可以直接导入 vector_pkag。

from vector_pkag.vector_base import Vectorv = Vector(1, 2)print(v.sum_vector())print(v.init_vector())print(v.sum_vector())

vscode 的 settings.json

ctrl+shift+p,然后在搜索框中搜索 settings,就可以搜索到该json文件。

在vscode的settings.json添加下述配置项。

// 用于代码自动补全的路径
"python.autoComplete.extraPaths": ["${workspaceFolder}"],
// 用于语言服务分析(语法检查、跳转等)的路径
"python.analysis.extraPaths": ["${workspaceFolder}"],
// 终端中生效的 PYTHONPATH(可选,确保终端运行时也能识别)
"terminal.integrated.env.windows": {"PYTHONPATH": "${workspaceFolder}/src;${workspaceFolder};${env:PYTHONPATH}"
},
"terminal.integrated.env.osx": {"PYTHONPATH": "${workspaceFolder}/src:${workspaceFolder}:${env:PYTHONPATH}"
},
"terminal.integrated.env.linux": {"PYTHONPATH": "${workspaceFolder}/src:${workspaceFolder}:${env:PYTHONPATH}"
},

打包

uv 打包很方便,运行下述命令即可。

uv build

会打包成whl文件

dist
├── vector_pkag-0.1.0-py3-none-any.whl
└── vector_pkag-0.1.0.tar.gz

uv 安装对应的whl文件

把 vector_pkag-0.1.0-py3-none-any.whl 拷贝到另外一个需要装包的uv项目pkags目录下。
再运行下述命令进行装包

uv add pkags/vector_pkag-0.1.0-py3-none-any.whl

需要装包的uv项目的 pyproject.toml 详情如下:

[project]
name = "test"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = ["vector-pkag",
][tool.uv.sources]
vector-pkag = { path = "pkags/vector_pkag-0.1.0-py3-none-any.whl" }[[tool.uv.index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true

上面显示了当前uv项目安装了 vector-pkag,该包来自 pkags 目录。

http://www.dtcms.com/a/324123.html

相关文章:

  • Rust进阶-part6-宏
  • WPFC#超市管理系统(5)商品布局、顾客登录、商品下单
  • redis集群-docker环境
  • JAVA+AI简化开发操作
  • `sk_buff` 结构体详解(包含全生命周期解析)
  • How Websites Work 网站如何运作
  • 社交与职场中的墨菲定律
  • 2025年6月电子学会全国青少年软件编程等级考试(Python三级)真题及答案
  • DBAPI 实现不同角色控制查看表的不同列
  • 量子计算机实用化:从理论到现实的艰难跨越
  • 数据中心可视化:算力中枢智能运维
  • 编程基础之字符串——统计数字字符个数
  • JDBC的连接过程(超详细)
  • 【Docker-Day 12】揭秘容器网络:深入理解 Docker Bridge 模式与端口映射
  • Python爬虫-爬取政务网站的文档正文内容和附件数据
  • 【Linux | 网络】数据链路层
  • 电脑清理3步速成法
  • 三相LLC拓扑分析
  • CompletableFuture实现Excel sheet页导出
  • 产品经理入门 - 产品解决方案(需求分析、 功能优先级划分、功能价值、用户体验)
  • RabbitMQ面试精讲 Day 19:网络调优与连接池管理
  • NLP---IF-IDF案例分析
  • AI编程插件对比分析:CodeRider、GitHub Copilot及其他
  • 构建企业级Odoo 18 WMS——功能、架构与拓展蓝图
  • 宝塔面板部署sentinel
  • 【传奇开心果系列】基于Flet框架开发的增强版“Hello World“应用程序学习flet框架的拔高起点
  • 【后端】Java 8 特性 `User::getId` 语法(方法引用)介绍
  • Linux常用命令(后端开发版)
  • SQL(结构化查询语言)的四大核心分类
  • 【后端】Java 8 特性 Optional 可选类 介绍