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

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.xdnf.cn/news/17621.html

相关文章:

  • 【代码随想录day 16】 力扣 112. 路径总和
  • printf函数格式化输出攻略
  • SQL(结构化查询语言)的四大核心分类
  • 【Jenkins入门以及安装】
  • 【unitrix数间混合计算】2.11 二进制正整数特质(bin_pos.rs)
  • 《C语言》结构体和联合体练习题--1
  • 如何回收内存对象,有哪些回收算法?
  • Fish shell的abbr命令行参数介绍和Bat文件查看工具
  • 【QT】常⽤控件详解(七)容器类控件 GroupBox TabWidget 布局管理器 Spacer
  • 深度学习-卷积神经网络CNN-AlexNet
  • LeetCode 括号生成
  • Hadoop MapReduce过程
  • LeetCode - 搜索插入位置 / 排序链表
  • (LeetCode 面试经典 150 题) 104. 二叉树的最大深度 (深度优先搜索dfs)
  • 【Docker实战入门】从核心概念到镜像构建
  • JavaScript的 fetch() 方法 笔记250810
  • CSS优先级、HTTP响应状态码
  • Android的事件分发流程、Kotlin协程、4大组件、Handler机制、架构设计、性能优化、内存泄漏
  • 第4章 程序段的反复执行2while语句P128练习题(题及答案)
  • 智慧农业-无人机视角庄稼倒伏农作物倒伏检测数据集VOC+YOLO格式541张1类别
  • VSCode添加Python、Java注释技巧、模板
  • 疏老师-python训练营-Day40训练和测试的规范写法
  • NumPy性能飞跃秘籍:向量化计算如何提升400倍运算效率?
  • istio笔记03--快速上手多集群mesh
  • 【C语言】深入探索预处理
  • Matlab 基于BP神经网络结合Bagging(BP-Bagging)集成算法的单变量时序预测 (单输入单输出)
  • 带冷端补偿的热电偶采集方案MAX31855
  • Dell PowerEdge: Servers by generation (按代系划分的服务器)
  • 【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
  • C++2024 年一级