PythonLearn

用uv管理开发环境

uv用于管理包,也可以创建虚拟环境和构建包,相当于pip+venv+setup
特点是速度快,功能强大,且他的命令只有两个字母

安装

在有Python的环境下,可通过pip install uv安装
PowerShell也可以irm https://astral.sh/uv/install.ps1 | iex
bash也可以curl -LsSf https://astral.sh/uv/install.sh | sh
这些本质都是下一个压缩包,里面有uv和uvx两个执行文件

uv安装python

不太推荐这样,国内安装python速度很慢

uv python install 3.12

创建项目

建议用–python指定python版本

uv init --python=3.12

此时目录下会出现4个文件

uv创建虚拟环境

仅这样还不够,我们还需要一个虚拟环境,这个也可以通过–python指定python版本
如果已经初始化了python版本,则不需要指定
甚至不执行这个命令,在下面的步骤中,也会自动创建一个虚拟环境

uv venv

创建好虚拟环境后,可以不在命令行中应用环境,uv命令会自动应用环境

使用镜像

方法1: 设置环境变量UV_DEFAULT_INDEX=”https://mirrors.aliyun.com/pypi/simple”

方法2: 在pyproject.toml中编辑


[[index]]
url = "https://mirrors.cloud.tencent.com/pypi/simple/"
default = true

如果default=fasle,就会优先从官方源下载

添加/删除依赖

uv add httpx
uv remove httpx

这样也可以

uv pip install httpx
uv pip uninstall httpx

此时pyproject.toml会自动添加/删除依赖

同步依赖

如果是别人的项目,下过来需要安装依赖,则需要执行

uv sync

运行命令

uv run main.py

如果不使用uv运行,则需要手动激活环境,并执行命令
注意:在dockerfile中,如果用uv安装了命令(如uvicorn),最好使用uv运行, 因为此时的命令安装在虚拟环境中,全局环境中没有命令,直接执行会报错

构建包

uv build

构建的文件在dist/下,这里的.whl文件可以安装

创建命令

在pyproject.toml中添加行

[project.scripts]
eebackup = "eebackup.__main__:main"

此时再安装这个包,就会有eebackup命令,执行eebackup.__main__下的main函数

发布包

uv publish --token <token>

你需要你的账号的token,可以在pypi.org上申请

用uvx运行工具

假如pypi中有个eebackup库,提供了一个命令eebackup,则可以用uvx运行

uvx eebackup

uvx会自动安装这个库,并运行这个库的命令
uvx其实就等于uv tool run