uv安装python及其依赖的加速方法

简介: 国内在使用uv的时候,可能会涉及到装python的速度太慢的问题,为了解决这个问题,可以使用`UV_PYTHON_INSTALL_MIRROR`这个环境变量。除此以外,对于多人协作场景,`UV_CACHE_DIR`也是一个有用的环境变量。本文会介绍这两个变量。

国内在使用uv的时候,可能会涉及到装python的速度太慢的问题,为了解决这个问题,可以使用UV_PYTHON_INSTALL_MIRROR这个环境变量。除此以外,对于多人协作场景,UV_CACHE_DIR也是一个有用的环境变量。本文会介绍这两个变量。

UV_PYTHON_INSTALL_MIRROR

uv syncuv venvuv python install这几个命令都会安装一个python。这个python的安装包会从astral-sh/python-build-standalone/releases这里下载。但是对于国内的一些位置,从这里下载python的速度非常慢,有些地方根本访问不了。一个比较简单的方法是自己先进入这个页面,找到一个版本,比如20250409,然后下载几个需要的python版本,比如3.10、3.11、3.12,然后根据自己机器的架构,比如是x86_64的,linux系统,那就下载:

cpython-3.10.17+20250409-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
cpython-3.11.12+20250409-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
cpython-3.12.10+20250409-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz

然后在本地建一个目录,比如/mnt/workspace/uv_python_install_mirror/20250409,然后将上述压缩包放入这个目录,然后将环境变量UV_PYTHON_INSTALL_MIRROR设置成这个目录,这样就uv就会去这个目录里面找压缩包,然后快速安装python了。比如export UV_PYTHON_INSTALL_MIRROR=file:///mnt/workspace/uv_python_install_mirror/20250409

UV_CACHE_DIR

uv会把这台机器上安装过的一些源码包、wheel包存储在这个环境变量指向的目录下。因此一旦通过uv sync同步过一个环境,那么这个环境需要的依赖包就会在这个目录存储一份。对于云原生场景,启动一个新的容器,在这个容器里面使用uv sync,或者uv pip install的时候,如果可以将这个缓存目录挂载到容器内,然后设定环境变量UV_CACHE_DIR指向这个目录,那就可以快速拉起一个环境,所有的依赖都不需要重新下载了。

简单来说就是在开发机上,设定UV_CACHE_DIR为一个可共享的目录。然后用uv sync同步一个环境,此时这个目录就会存储各种缓存。然后在云原生平台启动容器的时候,挂载这个目录,并且设定容器的环境变量UV_CACHE_DIR为这个目录。然后在容器内使用uv sync,就可以利用这份缓存数据快速拉起环境。

当然,上述方法也有缺点。比如像阿里云的NAS,如果使用NFS协议挂载,由于uv在构建环境的时候是并行,存在一部分python包他们的文件是冲突的,uv的并行会让阿里云的NAS出错,会报一个OS Error 523。阿里云官方文档有讲具体原因,核心问题就是在阿里云NAS上以NFS协议挂载的时候,不支持并发对一个目录的文件进行rename。这是阿里云NAS产品设计上的问题,所以使用阿里云NAS作为uv缓存的话,就需要用户自己解决了。我目前测试的结果是,像部分jupyter相关的包,会冲突,会报523。但是报了523后,可以再次执行uv sync,然后这个同步会继续进行,多执行几次,就可以强制安装好环境。

目录
相关文章
|
2月前
|
Linux 计算机视觉 C++
【解决方案】Building wheel for opencv-python:安装卡顿的原因与解决方案
当你安装OpenCV时,命令行停在Building wheel for opencv-python (PEP 517) ... -似乎卡住了。这并非程序假死,而是其编译耗时巨大。本文将揭示原因,并提供优化安装体验的实用方法。
414 88
|
27天前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
|
1月前
|
Python
Python字符串center()方法详解 - 实现字符串居中对齐的完整指南
Python的`center()`方法用于将字符串居中,并通过指定宽度和填充字符美化输出格式,常用于文本对齐、标题及表格设计。
|
2月前
|
安全 Python
Python语言中常用的文件操作方法探讨
通过上述方法的结合使用,我们可以构筑出强大并且可靠的文件操作逻辑,切实解决日常编程中遇到的文件处理问题。
157 72
|
25天前
|
数据处理 开发工具 开发者
requirement.txt 管理python包依赖
在 Python 项目中,`requirements.txt` 用于记录依赖库及其版本,便于环境复现。本文介绍了多种生成该文件的方法:基础方法使用 `pip freeze`,进阶方法使用 `pipreqs`,专业方法使用 `poetry` 或 `pipenv`,以及手动维护方式。每种方法适用不同场景,涵盖从简单导出到复杂依赖管理,并提供常见问题的解决方案,帮助开发者高效生成精准的依赖列表,确保项目环境一致性。
249 4
|
26天前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
|
3月前
|
存储 机器学习/深度学习 人工智能
稀疏矩阵存储模型比较与在Python中的实现方法探讨
本文探讨了稀疏矩阵的压缩存储模型及其在Python中的实现方法,涵盖COO、CSR、CSC等常见格式。通过`scipy.sparse`等工具,分析了稀疏矩阵在高效运算中的应用,如矩阵乘法和图结构分析。文章还结合实际场景(推荐系统、自然语言处理等),提供了优化建议及性能评估,并展望了稀疏计算与AI硬件协同的未来趋势。掌握稀疏矩阵技术,可显著提升大规模数据处理效率,为工程实践带来重要价值。
155 58
|
2月前
|
数据管理 开发工具 索引
在Python中借助Everything工具实现高效文件搜索的方法
使用上述方法,你就能在Python中利用Everything的强大搜索能力实现快速的文件搜索,这对于需要在大量文件中进行快速查找的场景尤其有用。此外,利用Python脚本可以灵活地将这一功能集成到更复杂的应用程序中,增强了自动化处理和数据管理的能力。
150 0
|
3月前
|
JSON 数据格式 Python
解决Python requests库POST请求参数顺序问题的方法。
总之,想要在Python的requests库里保持POST参数顺序,你要像捋顺头发一样捋顺它们,在向服务器炫耀你那有条不紊的数据前。抓紧手中的 `OrderedDict`与 `json`这两把钥匙,就能向服务端展示你的请求参数就像经过高端配置的快递包裹,里面的商品摆放井井有条,任何时候开箱都是一种享受。
88 10
|
2月前
|
传感器 算法 数据挖掘
Python时间序列平滑技术完全指南:6种主流方法原理与实战应用
时间序列数据分析中,噪声干扰普遍存在,影响趋势提取。本文系统解析六种常用平滑技术——移动平均、EMA、Savitzky-Golay滤波器、LOESS回归、高斯滤波与卡尔曼滤波,从原理、参数配置、适用场景及优缺点多角度对比,并引入RPR指标量化平滑效果,助力方法选择与优化。
416 0

热门文章

最新文章

推荐镜像

更多