一、pipx管理工具
1.1 安装 pipx
在 Ubuntu / WSL 上可以用两种方式安装,推荐第二种(官方脚本)或第三种(pip 安装最新版本并自动配置 PATH)。
1.1.1、apt 安装(最快,但版本往往偏旧)
sudoaptupdatesudoaptinstallpipx# apt 默认把可执行文件装在 /usr/bin/pipx如果只是想临时体验可以这么做,但通常 apt 源里的 pipx 版本落后,且不会帮你配置用户路径。
1.1.2、官方一键脚本(最新版 + 自动配置)
python3-mpipinstall--userpipx python3-mpipx ensurepath# 把 ~/.local/bin 写进 PATH解释:
--user把 pipx 安装到~/.local下,避免 sudo;ensurepath会在~/.bashrc、~/.zshrc等文件尾部追加
让之后所有终端都能直接用# added by pipx export PATH="$HOME/.local/bin:$PATH"pipx命令。
执行完后:
- 重新开一个终端(或
source ~/.bashrc),再试:pipx--version
1.1.3、纯 pip + 手工 PATH(万一网络受限)
python3-mpipinstall--userpipx# 手动把 ~/.local/bin 加到 PATH,并重开终端exportPATH="$HOME/.local/bin:$PATH"把上面 export 语句写进~/.bashrc或~/.zshrc即可。
1.2、使用pipx 安装 poetry&Hatch 生成 pyproject.toml 文件
1.2.1 、Poetry(最流行的 All-in-One)
安装
pipxinstallpoetry在现有目录里交互式生成
poetry init# 逐步问答,最后生成 pyproject.toml• 新项目直接
poetry new --src mypkg,骨架(src 目录、tests、pyproject)一次到位。后续操作
# 安装依赖poetryaddfastapi...# poetry install # 创建虚拟环境并安装依赖# poetry build # 打包 wheel / sdist
1.2.2、Hatch(官方推荐的新一代工具)
安装
pipxinstallhatch生成项目模板
hatch new mypkg会得到:
mypkg/ ├─ src/mypkg/__init__.py ├─ tests/ └─ pyproject.toml ← 已写好 build-system + project 字段依赖管理
cdmypkg hatchenvcreate hatch run +dev:pytest hatch build
以下是关于 Python 管理工具uv和uvx的详细介绍,包括核心功能、使用方式及常见命令:
二、uv与uvx管理工具(推荐)
uv是高性能 Python 包和环境管理工具,旨在替代pip、virtualenv、pip-tools等工具。其核心优势包括:
- 极速性能:依赖解析和包安装速度比
pip快 10-100 倍。 - 集成化功能:整合虚拟环境管理、依赖锁定、Python 版本管理、工具运行等。
- 轻量级设计:自动识别
.venv目录,无需手动激活环境。
uvx是uv tool run的别名,用于在隔离环境中临时运行 Python 工具(如ruff、black),无需全局安装。
2.1、安装uv
2.1.1 通过独立脚本安装(推荐):
# Linux/macOScurl-LsSfhttps://astral.sh/uv/install.sh|sh# Windows(PowerShell)powershell-c"irm https://astral.sh/uv/install.ps1 | iex"2.1.2 通过pipx安装:
pipxinstalluv2.1.3 验证安装:
uv--version2.2、uv核心功能与命令
uv 官方doc
注意:在uv环境下的pip操作,都需要替换为 uv pip,使用which pip 就会发现如果仅使用pip 是环境变量中全局的pip
2.2.1项目初始化与开发模式
- 第一步:创建项目文件夹,创建项目的
pyproject.toml文件如下(推荐这种做法)
[project]name="fastchat_test"version="0.1.0"requires-python=">=3.11,<3.12"dependencies=[][build-system]requires=["hatchling>=1.17.1"]build-backend="hatchling.build"[tool.hatch.build.targets.wheel]packages=["src/fastchat_test"]# 参数解释: - name:项目的名字 - version:项目的版本 - requires-python:比较重要,如果不指定,uv add 时可能会安装最新的python,这里强制uv安装指定的python版本 - dependencies:项目依赖库,使用 uv add 后,add 的包会添加至这里 - build-system:使用 用 hatch 打包 - tool.hatch.build.targets.wheel:指定包目录(src-layout 项目),这会让 Hatch 把 src/fastchat_test 当作主包,项 目的核心代码也在src/fastchat_test目录下,使用 uv pip install -e . 命令后,python会以src/fastchat_test作为项目 根目录寻址- 第二步:创建
.gitignore和.gitattributes文件,内容如下:
.gitignore
# Python-generated files__pycache__/ *.py[oc]build/ dist/ wheels/ *.egg-info# Virtual environments.venv# macOS 系统文件.DS_Store# 包含子目录中的 .DS_Store**/.DS_Store# pycharm .idea.idea/ *.iml# vibe code.claude/ .worktrees/ .agents/ .codex/# 自定义文件draft/.gitattributes
# 自动识别文本文件;所有文本在工作区统一使用 LF*text=autoeol=lf# Windows 批处理脚本保留 CRLF*.bat texteol=crlf *.cmd texteol=crlf# 明确标记二进制文件,禁止行尾转换*.xlsx binary *.xls binary *.png binary *.jpg binary *.jpeg binary *.gif binary *.ico binary *.pdf binary *.zip binary *.gz binary *.tar binary *.pkl binary *.woff binary *.woff2 binary *.ttf binary *.eot binary- 第三步:使用
uv add添加包(类似pip intall包) - 第四步:使用
uv remove移除包(类似pip uninstall包) - 第五步:可能会用到:
source .venv/bin/activate激活虚拟环境 - 第六步:以编辑模式install项目,命令为
uv pip install -e .,注意前面的uv前缀必须加上,特别适合项目发布前开发阶段,详情可以见 15分钟搞懂Python项目结构和打包,由于我们创建的pyproject.toml文件定义了[tool.hatch.build.targets.wheel],故uv pip install -e .后packages对应的路径会加入到python寻址的PATH中(卸载使用uv pip uninstall .命令),以packages作为项目导包根目录将不会出现导包路径错误 - 第七步:打包项目为
whl包发布,使用uv build或python -m build
2.2.2项目依赖安装
当拿到他人使用uv管理的项目时,只需要执行uv sync即可将整个依赖环境安装
# 环境依赖包同步uvsync# 使用下面命令可以将项目以可编辑模式安装到当前目录uv的虚拟环境中uv pipinstall-e.# 仅卸载当前项目(推荐)uv pip uninstall<你的项目包名># 注:<你的项目包名> 是你在 pyproject.toml 或 setup.py 中定义的 name,而不是当前的文件夹名。2.2.3常用的简单命令
uvsync# 根据 pyproject.toml 同步环境uv pip list# 查看安装的包uv self update# 更新 uv 工具自身uv cache prune# 清理过期缓存(如有更新故障)2.2.4uv安装包:uv pip 与 uv add 的区别
- 用
uv add xxx安装,包会被写进你的依赖文件,团队成员一同步代码就能看到项目需要这个包。 - 用
uv pip install xxx,只是把包装进当前环境,但依赖文件里没有这个包的记录,以后别人同步依赖或者清空环境重装时,这个包就不会自动被安装,需要手动加回。
总结
- “临时”=只装进环境、不记录依赖,不会自动删除,除非你手动卸载或者重新创建环境。
- 如果想试完就删,可以自己运行
uv pip uninstall xxx - 如果想安装后自动删除,可以写个脚本,但
uv本身不会自动卸载。
拓展举例
- 安装并试用(不会记录依赖文件):
uv pipinstallsomepkg# 用完可以卸载uv pip uninstall somepkg# 从 requirements.txt 安装依赖uv pipinstall-rrequirements.txt# 升级已有包uv pipinstall--upgradeuvicorn# 查看当前安装的包uv pip list# 导出依赖(冻结)## uv pip freeze > requirements.txtuv pip list--format=freeze>requirements.txt# 查看包信息uv pip show fastapi# 清理缓存uv pip cache purge - 安装并记录到项目(推荐团队项目):
uvaddsomepkg# 会写入 pyproject.toml 或 requirements.txt
2.3、uvx工具运行
2.3.1、基础用法
- 运行工具:
uvx ruff.# 运行最新版 Ruffuvx black@latest# 强制使用最新版uvx ruff@0.3.0 check# 指定版本 - 处理包名与命令名不同:
uvx--fromhttpie http# 包名为 httpie,命令为 http
2.3.2、高级功能
- 安装额外依赖:
uvx--withmkdocs-material mkdocs# 包含插件 - 从 Git 源运行:
uvx--fromgit+https://github.com/httpie/cli@master httpie
2.3.3、安装工具到全局
若需频繁使用某工具,可全局安装:
uv toolinstallruff# 安装到 PATHuv tool upgrade ruff# 升级2.3.4、uv与uvx对比
| 场景 | uv命令 | uvx命令 |
|---|---|---|
| 运行脚本 | uv run py文件 | |
| 运行临时工具 | uv tool run <工具名> | uvx <工具名> |
| 指定工具版本 | uv tool run tool@版本 | uvx tool@版本 |
| 全局安装工具 | uv tool install | 不适用 |
| 包含额外依赖 | uv tool run --with | uvx --with |
2.3.5、常见问题与注意事项
- 环境隔离:
uvx默认在临时环境中运行工具,与项目依赖隔离。若需访问项目依赖(如运行pytest),应使用uv run。
- 缓存机制:
uv缓存依赖以提高性能,可通过uv cache clean清理缓存。
- 兼容性:
uv pip命令兼容传统pip工作流,但部分高级功能可能略有差异。
三、参考文献:
- 使用 uv 管理 Python 環境