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

发布于:2025-08-11 ⋅ 阅读:(15) ⋅ 点赞:(0)

背景

最近一直在使用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 dataclass

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

@dataclass
class Vector:
    x : int
    y : int
    
    def add(self, other):
        self.x += other.x
        self.y += other.y
        
    def __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 Vector

v = 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 目录。