
文章目录一、那些年我们一起等过的pip二、uv是啥一句话解释清楚三、安装一行命令秒速上岗四、实战上手从0到1搭建项目4.1 新建项目一键初始化4.2 装依赖快到飞起4.3 跑代码告别激活环境五、老项目迁移无痛上手5.1 简单迁移兼容原有流程5.2 彻底迁移拥抱pyproject.toml六、缓存与镜像国内加速秘籍6.1 全局缓存省空间还提速6.2 国内镜像配置告别下载慢方法一环境变量临时方法二配置文件永久方法三命令行指定单次七、写在最后目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow教程通俗易懂高中生都能看懂还有各种段子风趣幽默从深度学习基础原理到各领域实战应用都有讲解我22年的AI积累全在里面了。注意教程仅限真正想入门AI的朋友否则看看零散的博文就够了。一、那些年我们一起等过的pip哥们咱说实话用Python这些年最煎熬的是啥是写不出代码吗不是等pip install的时候盯着那个光标一闪一闪感觉时间都凝固了。特别是当你新接了个项目满怀激情地克隆下来准备大展拳脚结果一运行pip install -r requirements.txt好家伙终端开始慢悠悠地解析依赖。你出去接了杯水回来还在Collecting package metadata你去上了个厕所回来还在Resolving dependencies你甚至开了把王者荣耀打完了抬头一看——哎报错了依赖冲突版本不兼容气得你想把键盘砸了。这事儿真不怪咱们网速慢主要是pip那套逻辑太老了。它是用Python写的解析依赖的时候那个递归算法啧啧堪称龟速。而且每个项目都自己建个虚拟环境一样的包来来回回下几百遍硬盘空间就这么被吃光了。于是乎一群用Rust的大佬看不下去了。他们想咱们Rust以性能变态著称要是用Rust重写了Python的包管理器那不得起飞咯2024年Astral团队就是搞出Ruff那个代码检查神器的那帮人正式推出了uv——一个用Rust写的Python包管理器。这玩意儿有多快呢官方说比pip快10-100倍实际用起来感觉就是坐上了高铁以前绿皮车晃悠半天的事现在嗖一下就完了。二、uv是啥一句话解释清楚如果你还没听过uv我这么跟你说吧它就是来砸pip场子的。以前你要搞Python开发得装pip装包、装virtualenv建环境、装pip-tools锁版本、装pyenv切Python版本工具链长得跟羊肉串似的。现在uv说了“都别折腾了我一个顶你们全部。”uv能干啥它能安装管理Python版本替代pyenv、能创建虚拟环境替代virtualenv、能装包卸包替代pip、能锁版本生成lock文件替代pip-tools、能跑单文件脚本替代pipx还能像Cargo那样管理工作空间。最关键的是它不用Python也能装。你没听错哪怕你电脑上还没装Pythoncurl一条命令先把uv装上然后uv自己就能去下载安装Python解释器。这设计太贴心了简直是给新手小白量身定制的。三、安装一行命令秒速上岗装uv简单到令人发指官方给了几种姿势我推荐最粗暴的独立安装Mac和Linux用户curl-LsSfhttps://astral.sh/uv/install.sh|shWindows用户PowerShellpowershell-ExecutionPolicy ByPass-cirm https://astral.sh/uv/install.ps1 | iex就这么一行完事了。它会自动把uv装到你的系统PATH里不用配置这配置那。装完之后记得重启下终端然后验证一下uv--version如果看到版本号比如0.6.12这种恭喜你你已经站在了Python包管理的技术前沿。当然如果你实在不想用curl也可以用pip或者pipx装pipinstalluv# 或者pipxinstalluv不过我个人推荐独立安装因为这样可以随时用uv self update一键更新方便得很。四、实战上手从0到1搭建项目光说不练假把式咱们直接上手撸一个项目看看uv到底香在哪。4.1 新建项目一键初始化以前建Python项目你得手动建文件夹、建requirements.txt、建venv、激活环境……现在呢mkdirmy_awesome_projectcdmy_awesome_project uv inituv init这条命令干了啥它会自动创建一个pyproject.toml文件这是现代Python项目的标准配置文件以后所有的依赖信息都存在这里再也不用那个文本文件的requirements.txt了当然兼容还是兼容的后面说。如果你想指定Python版本比如就要用3.12uv pythoninstall3.12uv python pin3.12uv会自动去下载安装Python 3.12然后给这个项目锁定版本。你不用担心跟其他项目冲突每个项目的Python版本是独立的。4.2 装依赖快到飞起现在咱们给项目加个依赖比如装个FastAPIuvaddfastapi看到没不需要激活虚拟环境不需要手动建venvuv会自动在项目目录下创建.venv文件夹然后把包装进去。更爽的是它同时会更新pyproject.toml里的依赖列表还会生成一个uv.lock文件。这个uv.lock文件可得好好说说。以前用pip你装了个包下次别人部署时可能版本就不一样了结果代码就跑不通。有了uv.lock所有的依赖版本都被锁得死死的精确到每一位。你同事拉下来代码直接uv sync保证跟你本地的环境一模一样在我电脑上能跑这种借口从此成为历史。如果你想装开发测试用的包比如pytest但不想让它进生产环境uvadd--devpytest这样pytest只在开发时存在打包发布的时候不会被包含进去泾渭分明。4.3 跑代码告别激活环境以前跑Python脚本你得先source .venv/bin/activate激活环境然后再python app.py麻烦得要死。现在有了uv run直接uv run python app.py或者你装了flask/fastapi这种命令行工具uv run fastapi dev main.pyuv会自动找到项目下的虚拟环境在里面执行命令执行完自动退出。你本机的Python环境始终保持干净项目之间绝不互相污染。还有个骚操作——内联依赖。比如你有个单文件脚本hello.py以前你得写个requirements.txt告诉别人要装啥依赖。现在可以直接在脚本里写///script dependencies[requests2.28.0,rich13.0.0,]///importrequestsfromrichimportprintprint([bold green]Hello from uv![/bold green])然后直接uv run hello.pyuv看到文件头里的注释会自动安装依赖然后执行执行完这些依赖还不会污染你的全局环境。这功能对于写个小工具、自动化脚本来说简直不要太爽。五、老项目迁移无痛上手我知道很多读者最关心的是老子手上还有一堆老项目用的是piprequirements.txt咋整难道要推倒重来别急uv早就替你想好了。迁移分两种情况一种是简单迁移快速上手一种是彻底迁移拥抱现代化。5.1 简单迁移兼容原有流程如果你暂时不想改动太大只想享受uv的速度优势那简单把原来所有的pip命令前面加个uv就行了原来用pip现在用uvpip install requestsuv pip install requestspip install -r requirements.txtuv pip install -r requirements.txtpip-compile requirements.inuv pip compile requirements.inpip-sync requirements.txtuv pip sync requirements.txt对uv提供了一个完全兼容pip的接口命令长得都一样就是前面加个uv前缀速度直接起飞。实测用uv pip compile替代pip-compile速度能快150倍。5.2 彻底迁移拥抱pyproject.toml如果你想彻底现代化把老项目转成uv原生管理也很简单。假设你现在有个老项目里面有requirements.txt先初始化uv项目uv init把原来的依赖导进来uvadd-rrequirements.txt这条命令会读取你的requirements.txt把所有的包装进来同时生成pyproject.toml和uv.lock。如果你想保留原来锁定的版本不想升级加个约束参数uvadd-rrequirements.txt--frozen或者分别导入开发和生产依赖uvadd-rrequirements.txt# 生产依赖uvadd--dev-rrequirements-dev.txt# 开发依赖导入完之后你就可以把旧的requirements.txt删了以后用uv add和uv remove管理依赖就行。团队协作的时候别人拉下来代码只需要uvsync一键安装所有依赖包括Python版本都会自动对齐省心到家。六、缓存与镜像国内加速秘籍说到这肯定有兄弟要问了uv是快了但下载包的时候不还是要从PyPI下吗国内访问外网那速度不还是便秘好问题uv在缓存和镜像支持上也做了很多优化。6.1 全局缓存省空间还提速uv用了全局缓存机制。啥意思呢以前你10个项目都用numpypip会在每个项目的venv里都存一份numpy占10份硬盘空间。uv会把numpy存在全局缓存里10个项目都引用同一份文件通过硬链接或软链接磁盘空间瞬间省下来90%。而且下次再建新项目用到numpyuv发现缓存里有直接秒装连下载都免了。这就是为什么官方说warm cache下安装速度极快。缓存位置默认在Linux/macOS: ~/.cache/uvWindows: %LOCALAPPDATA%\uv\cache如果你想清缓存uv clean6.2 国内镜像配置告别下载慢虽然uv解析依赖快了但下载还得靠网络。好在uv完全支持国内镜像源配置方法有三种方法一环境变量临时用阿里云镜像exportUV_DEFAULT_INDEXhttps://mirrors.aliyun.com/pypi/simple/或者用清华源exportUV_DEFAULT_INDEXhttps://pypi.tuna.tsinghua.edu.cn/simple/Windows PowerShell$env:UV_DEFAULT_INDEXhttps://mirrors.aliyun.com/pypi/simple/方法二配置文件永久在Linux/macOS上mkdir-p~/.config/uvvim~/.config/uv/uv.toml在Windows上去%APPDATA%\uv\目录下建uv.toml文件。文件内容写[[index]] url https://pypi.tuna.tsinghua.edu.cn/simple/ default true保存之后以后所有的uv add、uv pip install都会默认走清华源速度直接拉满。方法三命令行指定单次如果你只想临时用一下镜像uvaddfastapi--indexhttps://mirrors.aliyun.com/pypi/simple/这个--index参数会覆盖默认设置适合偶尔需要切源的场景。常用国内镜像源列表阿里云https://mirrors.aliyun.com/pypi/simple/清华https://pypi.tuna.tsinghua.edu.cn/simple/中科大https://pypi.mirrors.ustc.edu.cn/simple/豆瓣http://pypi.douban.com/simple/腾讯云https://mirrors.cloud.tencent.com/pypi/simple建议首选阿里云或清华稳定性比较好。七、写在最后说实话用了uv几个月我现在已经回不去了。每次看同事还在那等pip解析依赖我都想上去拍拍他肩膀“兄弟时代变了。”uv这工具不仅仅是快它把Python项目管理那一堆散装的工具pip、venv、pip-tools、pyenv整合成了一个统一的工作流。你不用再记一堆不同的命令不用再为虚拟环境激活来激活去甚至不用担心Python版本的问题。对于新手来说uv降低了Python开发的门槛对于老手来说uv提升了效率特别是CI/CD流水线里以前构建环境要等半天现在几分钟搞定。如果你还在犹豫要不要迁移我的建议是新项目直接用uv老项目逐步迁移。反正uv兼容pip的命令你可以慢慢切完全没有心理负担。2026年了Python的包管理终于迎来了它的现代化时刻。别再用马车时代的工具了换上uv这辆跑车感受下什么叫极速开发。最后别忘了装好uv之后顺手配个国内镜像那体验真叫一个丝滑。去试试吧保证你回来给我点赞。参考链接uv官方文档https://docs.astral.sh/uv/GitHub仓库https://github.com/astral-sh/uv目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow教程通俗易懂高中生都能看懂还有各种段子风趣幽默从深度学习基础原理到各领域实战应用都有讲解我22年的AI积累全在里面了。注意教程仅限真正想入门AI的朋友否则看看零散的博文就够了。