news 2026/9/17 9:31:07

Ubuntu / WSL 安装pipx uv 管理项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu / WSL 安装pipx uv 管理项目

一、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

解释:

  1. --user把 pipx 安装到~/.local下,避免 sudo;
  2. 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)

  1. 安装

    pipxinstallpoetry
  2. 在现有目录里交互式生成

    poetry init# 逐步问答,最后生成 pyproject.toml

    • 新项目直接poetry new --src mypkg,骨架(src 目录、tests、pyproject)一次到位。

  3. 后续操作

    # 安装依赖poetryaddfastapi...# poetry install # 创建虚拟环境并安装依赖# poetry build # 打包 wheel / sdist

1.2.2、Hatch(官方推荐的新一代工具)

  1. 安装

    pipxinstallhatch
  2. 生成项目模板

    hatch new mypkg

    会得到:

    mypkg/ ├─ src/mypkg/__init__.py ├─ tests/ └─ pyproject.toml ← 已写好 build-system + project 字段
  3. 依赖管理

    cdmypkg hatchenvcreate hatch run +dev:pytest hatch build

以下是关于 Python 管理工具uvuvx的详细介绍,包括核心功能、使用方式及常见命令:

二、uvuvx管理工具(推荐)

uv高性能 Python 包和环境管理工具,旨在替代pipvirtualenvpip-tools等工具。其核心优势包括:

  • 极速性能:依赖解析和包安装速度比pip快 10-100 倍。
  • 集成化功能:整合虚拟环境管理、依赖锁定、Python 版本管理、工具运行等。
  • 轻量级设计:自动识别.venv目录,无需手动激活环境。

uvxuv tool run的别名,用于在隔离环境中临时运行 Python 工具(如ruffblack),无需全局安装。

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安装:

pipxinstalluv

2.1.3 验证安装:

uv--version

2.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 buildpython -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本身不会自动卸载

拓展举例

  1. 安装并试用(不会记录依赖文件):
    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
  2. 安装并记录到项目(推荐团队项目):
    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、uvuvx对比

场景uv命令uvx命令
运行脚本uv run py文件
运行临时工具uv tool run <工具名>uvx <工具名>
指定工具版本uv tool run tool@版本uvx tool@版本
全局安装工具uv tool install不适用
包含额外依赖uv tool run --withuvx --with

2.3.5、常见问题与注意事项

  1. 环境隔离
    • uvx默认在临时环境中运行工具,与项目依赖隔离。若需访问项目依赖(如运行pytest),应使用uv run
  2. 缓存机制
    • uv缓存依赖以提高性能,可通过uv cache clean清理缓存。
  3. 兼容性
    • uv pip命令兼容传统pip工作流,但部分高级功能可能略有差异。

三、参考文献:

  1. 使用 uv 管理 Python 環境
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 9:30:21

把Scratch逼成游戏引擎?三个月实战复盘:性能优化与架构设计

经常有人问我&#xff0c;都2025年了&#xff0c;为什么还有人要把Scratch逼成游戏引擎&#xff1f;不瞒你说&#xff0c;我一度也回答不上来。但当我真正动手&#xff0c;把一款正经的空战射击游戏塞进这个“教小孩拖积木”的工具里&#xff0c;还稳定跑在接近60帧时&#xff…

作者头像 李华
网站建设 2026/9/17 9:30:11

数据库加密四大方案:TDE、列加密、应用层与存储层实战对比

1. 数据库数据加密不是“选个插件就完事”&#xff0c;而是分层防御的系统工程数据库数据加密这件事&#xff0c;我带过十几支企业级开发团队&#xff0c;从金融核心账务系统到政务人口库&#xff0c;踩过的坑比写过的SQL还多。很多人一上来就问&#xff1a;“TDE和应用层加密哪…

作者头像 李华
网站建设 2026/9/17 9:27:34

SpringBoot+Vue构建健康管理系统的全栈实践

1. 项目概述&#xff1a;当健康管理遇上全栈开发去年参与某健康科技公司系统重构时&#xff0c;我接手了一个与"123健康管理系统"高度相似的项目。这类系统本质上是通过数字化手段实现健康数据的采集、分析和干预&#xff0c;而SpringBootVue的技术组合恰好能完美支撑…

作者头像 李华
网站建设 2026/9/17 9:25:33

VT开启教程:让雷电模拟器告别卡顿,一步到位优化性能

1. 开启VT前的真实故事&#xff1a;为什么别人雷电模拟器流畅&#xff0c;你却在受苦先说说我自己的经历。前年我还在用一台老笔记本玩手游&#xff0c;配置是i5-7300HQ加16G内存&#xff0c;按说玩个《王者荣耀》或者《和平精英》手游版&#xff0c;用雷电模拟器应该是轻轻松松…

作者头像 李华
网站建设 2026/9/17 9:20:15

Windows开机启动项管理:查全注册表、计划任务、服务与自启配置

很多人对 Windows 开机启动的理解&#xff0c;就停在任务管理器那个"启动"标签页上。打开、右键、禁用&#xff0c;收工。可实际折腾几年你会发现&#xff0c;那个列表顶多覆盖了真实自启机制的一半——剩下的一半藏在计划任务的触发器里、藏在服务的恢复选项里、藏在…

作者头像 李华