当前位置: 首页 > article >正文

【Python】开发工具uv

文章目录

  • 1. uv install
    • 1.1 下载安装脚本来安装
    • 1.2 使用pipx安装uv
    • 1.3 补充
  • 2. 考虑在离线系统上安装uv
    • 2.1 下载并上传安装包
    • 2.2 用户级安装uv(~/.local/bin/)
    • 2.3 补充
  • 3. uv 管理Python解释器
  • 4. uv 管理依赖
  • 5. uv运行代码
    • 5.1 uv不在项目下执行脚本
    • 5.2 uv在项目下执行脚本
    • 5.3 uv执行脚本,脚本自己维护依赖
    • 5.4 补充
  • 6. python开发工具管理
  • 7. 项目打包为.whl文件
  • 补充

1. uv install

1.1 下载安装脚本来安装

# 用curl
curl -LsSf https://astral.sh/uv/install.sh | sh# 用wget
wget -qO- https://astral.sh/uv/install.sh | sh

1.2 使用pipx安装uv

补充:pipx是安全地安装和运行隔离的 Python 命令行工具,它能够解决全局安装python应用( pip install --usersudo pip install)的依赖冲突和环境污染问题。sudo pip install <pkg>
安装的可执行文件位置:/usr/local/bin
安装的库文件位置:
/usr/local/lib/pythonX.X/dist-packages/ (Debian/Ubuntu)
/usr/lib/pythonX.X/site-packages/ (RHEL/CentOS)pip install --user <pkg>
安装的可执行文件位置:~/.local/bin/
安装的库文件位置:~/.local/lib/pythonX.X/site-packages/pipx install <pkg>
将每个工具安装在独立的虚拟环境中
~/.local/pipx/venvs/flake8/     # flake8 的独立环境# 先安装pipx
sudo apt install pipx# 再安装uv
pipx install uv
pipx ensurepath && source ~/.basrc

1.3 补充

  • pipx依赖venv,需要确保venv全局安装。sudo apt install python3.8-venv
  • pip安装提示,Not installing to existing directory。可能是之前失败安装存在残留文件。pipx install --force
  • 安装uv后还需要将可执行文件目录添加到$PATH。执行pipx ensurepath可以自动把pipx下载的工具的可执行文件目录都添加到$PATH

2. 考虑在离线系统上安装uv

2.1 下载并上传安装包

# 使用pip下载,.whl安装包在当前目录,可能有多个.whl文件,所以打包
pip download uv
cd .. && tar -zcvf uv.tar.gz uv/scp uv.tar.gz cg@192.168.250.234:~/Downloads/

2.2 用户级安装uv(~/.local/bin/)

# 解压
cd ~/Downloads/
tar -zxvf uv.tar.gz# 安装到用户级site-package
pip install --no-index --find-links=~/Downloads/uv uv
--no-index:禁止从 PyPI 下载。
--find-links=.:从当前目录查找包。# 添加~/.local/bin到$PATH
echo 'export PATH=$HOME/.local/bin:$PATH'

2.3 补充

Q:安装包为uv-0.7.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl,包名:uv;包版本:0.7.3;python兼容版本:python3;abi标签:none,表示不依赖python abi(不依赖任何扩展的纯python包);架构:x86_64;系统兼容性:manylinux标准(manylinux_2_17和manylinux2014)。目标机器架构为arm,无法安装这个安装包。
A:确认安装包的平台版本和目标系统平台兼容,目标系统是x86_64的,则安装包应该是x86_64d的, 目标系统是arm结构的,安装包应该是arm架构的。

3. uv 管理Python解释器

# 查看uv可安装和已经安装的python版本
uv list python# 安装指定版本的python,安装位置 /home/user01/.local/share/uv/python/
uv python install cpython-3.12# 使用已安装的某个版本的python解释器执行
uv run -p 3.12 main.py# 使用已安装的某个版本的python解释器进入交互式执行环境
uv run -p 3.12 pythonps: uv指定python解释器版本时,如果uv没有安装之,则会自动安装它

4. uv 管理依赖

# 创建工程
mkdir test && cd test
uv init -p 3.12# 目录树
tree
├── .git
├── .gitignore
├── .python-version  # 3.12
├── README.md
├── main.py
└── pyproject.toml  # 跟踪项目当前依赖# 假设项目源码文件依赖和pyproject.toml记录的不一样
uv sync

5. uv运行代码

5.1 uv不在项目下执行脚本

# main.py
import requestsif __name__ == '__main__':url = 'www.baidu.com'resp = requests.get(url)print(resp.text)# 执行脚本,未导入依赖报错
uv run main.py# 执行脚本,命令行中指定依赖,依赖下载到~/.cache/uv
uv run --no-project --with rich main..py

5.2 uv在项目下执行脚本

# 进入项目
cd test# 执行脚本,未导入依赖错误
uv run main.py# 执行脚本,命令行中指定依赖,依赖下载到~/.cache/uv
uv run --with requests main.py# 执行脚本,使用项目的虚拟环境维护依赖
uv add requests  # pyproject.toml记录了requests及其依赖
uv run main.py# 打印uv工程依赖树
uv treetest v0.1.0
└── requests v2.32.3├── certifi v2025.4.26├── charset-normalizer v3.4.2├── idna v3.10└── urllib3 v2.4.0# 从项目中以础依赖
uv remove requests

5.3 uv执行脚本,脚本自己维护依赖

# 脚本自己加上所需依赖
uv add --script main.py requests# uv将往main.py头插入记录依赖信息的注释
# /// script
# requires-python = ">=3.13"
# dependencies = [
#     "requests",
# ]
# ///import requestsif __name__ == '__main__':url = 'https://www.baidu.com'resp = requests.get(url)print(resp.text)# 执行,以脚本模式运行,即使在uv项目中也可以不加--no-project而运行
uv run --script main.py

5.4 补充

• uv初始化项目后首次执行run会先创建项目虚拟环境:.venv
• 在uv项目中,uv run xxx.py将以项目方式运行(使用项目的虚拟环境);在uv项目中,uv run --with xxx将使用临时环境(~/.cache/uv/);在项目中,uv run --script main.py将使用临时环境(~/.cache/uv),但是脚本自己可以维护依赖,而不必在命令行中用–with来指定依赖。

6. python开发工具管理

开发需要python工具,可将这些工具添加到项目依赖,但这些工具不应该随其他项目依赖打包。
uv add flake8 --dev

但是实际工程中,这些工具应该与项目无关,需要在其他地方维护。另外即使通过–dev可以避免项目打包时把工具打包进去,但是添加工具时可能添加工具自己的依赖到项目中而污染了项目的虚拟环境。正确做法时使用uv tool来维护这些工具。

# 工具安装到~./cache/uv/
uv tool install flake8# 查看已经安装的工具
uv tool list

7. 项目打包为.whl文件

# pyproject.toml文件中添加session
[project]
name = "p10-tmp"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [][prject.scripts]
test = ["test:main"]# 打包
uv build 
dist
├── p10_tmp-0.1.0-py3-none-any.whl
└── p10_tmp-0.1.0.tar.gz# 安装离线包
uv tool install dist/p10_tmp-0.1.0-py3-none-any.whl

补充

Q&A
Q:pip如何确定package安装到系统目录还是用户目录
A:pip根据以下要素判断该把package放到哪里:

  1. 是否添加–user参数:加–user参数,package放到用户级site-package中
  2. 是否处于虚拟环境激活状态:虚拟环境激活状态,package放在虚拟环境的site-package中
  3. 普通用户还是特权用户(root用户或者sudo pip install):普通用户则放在用户的site-package,特权用户则放在系统site-package中。
    注意,普通用户执行pip install 等价于pip install --user .

more about pip

• --user parameter
pip install --help
–user: Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on Windows. (See the Python documentation for site.USER_BASE for full details.)

• pip’'s doc
https://packaging.python.org/en/latest/tutorials/installing-packages/

相关文章:

【Python】开发工具uv

文章目录 1. uv install1.1 下载安装脚本来安装1.2 使用pipx安装uv1.3 补充 2. 考虑在离线系统上安装uv2.1 下载并上传安装包2.2 用户级安装uv&#xff08;~/.local/bin/&#xff09;2.3 补充 3. uv 管理Python解释器4. uv 管理依赖5. uv运行代码5.1 uv不在项目下执行脚本5.2 u…...

《技术择时,价值择股》速读笔记

文章目录 书籍信息概览技术择时价值择股投资策略投资心态 书籍信息 书名&#xff1a;《技术择时&#xff0c;价值择股&#xff1a;A股投资实战笔记》 作者&#xff1a;二十八画生 概览 技术择时 三种简单方法&#xff0c;教你买在起涨点 趋势行情中的“买点”判断&#xff…...

Python可视化设计原则

在数据驱动的时代&#xff0c;可视化不仅是结果的呈现方式&#xff0c;更是数据故事的核心载体。Python凭借其丰富的生态库&#xff08;Matplotlib/Seaborn/Plotly等&#xff09;&#xff0c;已成为数据可视化领域的主力工具。但工具只是起点&#xff0c;真正让图表产生价值的&…...

SAP重塑云ERP应用套件

在2025年Sapphire大会上&#xff0c;SAP正式发布了其云ERP产品的重塑计划&#xff0c;推出全新“Business Suite”应用套件&#xff0c;并对供应链相关应用进行AI增强升级。这一变革旨在简化新客户进入SAP生态系统的流程&#xff0c;同时为现有客户提供更加统一、智能和高效的业…...

2025.5.25总结

今天早上刷了会手机&#xff0c;然后下午去刷了一道科目一&#xff0c;限时训练3.5h。遗憾的是&#xff0c;这周只刷了一道题&#xff0c;并没有达成每周两道的目标。 其次&#xff0c;一天下来跟平时的节假日一样&#xff0c;有些小压抑。我也察觉到了自己的情绪。烦心事无非…...

(九)PMSM驱动控制学习---无感控制之高阶滑膜观测器

在之前的文章中&#xff0c;我们介绍了永磁同步电机无感控制中的滑模观测器&#xff0c;但是同时我们也认识到了他的缺点&#xff1a;因符号函数带来的高频切换分量&#xff0c;使用低通滤波器引发相位延迟&#xff1b;在本篇文章&#xff0c;我们将会介绍高阶滑模观测器的无感…...

6个跨境电商独立站平台

1. WP最主题(WPZUI) 官网&#xff1a;http://www.wpzui.com 简介&#xff1a; WP最主题专注于专业WordPress主题开发定制&#xff0c;致力于为用户提供高质量、高性能的WordPress主题。其主题设计注重用户体验和SEO优化&#xff0c;适用于多种网站类型&#xff0c;包括企业站…...

电子电路:电学都有哪些核心概念?

电子是基本粒子,带负电荷。电荷是物质的一种属性,电子带有负电荷,而质子带有正电荷。电荷的单位是库仑。 电流呢,应该是指电荷的流动,单位是安培,也就是库仑每秒。所以电流其实就是电荷在导体中的移动形成的。比如,当电子在导线中流动时,就形成了电流。不过要注意,传…...

SQL进阶之旅 Day 2:基础查询优化技巧

【SQL进阶之旅 Day 2】基础查询优化技巧 开篇&#xff1a;为什么需要基础查询优化&#xff1f; 在SQL学习的旅程中&#xff0c;掌握基础查询优化是迈向专业数据库开发的关键一步。随着数据量的爆炸式增长&#xff0c;简单的SELECT语句已经无法满足现代应用对性能的要求。今天…...

时序数据库 TDengine × Superset:一键构建你的可视化分析系统

如果你正在用 TDengine 管理时序数据&#xff0c;写 SQL 查询没问题&#xff0c;但一到展示环节就犯难——图表太基础&#xff0c;交互不够&#xff0c;甚至连团队都看不懂你辛苦分析的数据成果&#xff1f;别担心&#xff0c;今天要介绍的这个组合&#xff0c;正是为你量身打造…...

一键化部署

好的&#xff0c;我明白了。你希望脚本变得更简洁&#xff0c;主要负责&#xff1a; 代码克隆&#xff1a;从 GitHub 克隆你的后端和前端项目&#xff0c;并在克隆前确保目标目录为空。文件复制&#xff1a;将你预先准备好的 Dockerfile (后端和前端各一个)、前端的 nginx.con…...

Win 系统 conda 如何配置镜像源

通过命令添加镜像源&#xff08;推荐&#xff09; 以 清华源 为例&#xff0c;依次执行以下命令&#xff1a; # 添加主镜像源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main # 添加免费开源镜像源 conda config --add channels http…...

Devicenet主转Profinet网关助力改造焊接机器人系统智能升级

某汽车零部件焊接车间原有6台焊接机器人&#xff08;采用Devicenet协议&#xff09;需与新增的西门子S7-1200 PLC&#xff08;Profinet协议&#xff09;组网。若更换所有机器人控制器或上位机系统&#xff0c;成本过高且停产周期长。 《解决方案》 工程师选择稳联技术转换网关…...

《STL--list的使用及其底层实现》

引言&#xff1a; 上次我们学习了容器vector的使用及其底层实现&#xff0c;今天我们再来学习一个容器list&#xff0c; 这里的list可以参考我们之前实现的单链表&#xff0c;但是这里的list是双向循环带头链表&#xff0c;下面我们就开始list的学习了。 一&#xff1a;list的…...

whisper相关的开源项目 (asr)

基于 Whisper&#xff08;OpenAI 的开源语音识别模型&#xff09;的开源项目有很多&#xff0c;涵盖了不同应用场景和优化方向。以下是一些值得关注的项目&#xff1a; 1. 核心工具 & 增强版 Whisper OpenAI Whisper 由 OpenAI 开源的通用语音识别模型&#xff0c;支持多语…...

python的pip怎么配置的国内镜像

以下是配置pip国内镜像源的详细方法&#xff1a; 常用国内镜像源列表 清华大学&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple阿里云&#xff1a;https://mirrors.aliyun.com/pypi/simple中科大&#xff1a;https://pypi.mirrors.ustc.edu.cn/simple华为云&#xff1…...

PCB 通孔是电容性的,但不一定是电容器

哼&#xff1f;……这是什么意思&#xff1f;…… 多年来&#xff0c;流行的观点是 PCB 通孔本质上是电容性的&#xff0c;因此可以用集总电容器进行建模。虽然当信号的上升时间大于或等于过孔不连续性延迟的 3 倍时&#xff0c;这可能是正确的&#xff0c;但我将向您展示为什…...

领域驱动设计与COLA框架:从理论到实践的落地之路

目录 引言 DDD核心概念 什么是领域驱动设计 DDD的核心概念 1. 统一语言&#xff08;Ubiquitous Language&#xff09; 2. 限界上下文&#xff08;Bounded Context&#xff09; 3. 实体&#xff08;Entity&#xff09;与值对象&#xff08;Value Object&#xff09; 4. 聚…...

公有云AWS基础架构与核心服务:从概念到实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 &#xff08;初学者技术专栏&#xff09; 一、基础概念 定义&#xff1a;AWS&#xff08;Amazon Web Services&#xff09;是亚马逊提供的云计算服务&a…...

Python60日基础学习打卡D35

import torch import torch.nn as nn import torch.optim as optim from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler import time import matplotlib.pyplot as plt# 设置GPU设…...

Python经典算法实战

在编程的世界里&#xff0c;算法是解决问题的灵魂&#xff0c;而Python以其简洁优雅的语法成为实现算法的理想语言。无论你是初学者还是有一定经验的开发者&#xff0c;《Python经典算法实战》都能带你深入算法的殿堂&#xff0c;从理论到实践&#xff0c;一步步构建起扎实的编…...

spring+tomcat 用户每次发请求,tomcat 站在线程的角度是如何处理用户请求的,spinrg的bean 是共享的吗

对于 springtomcat 用户每次发请求&#xff0c;tomcat 站在线程的角度是如何处理的 比如 bio nio apr 等情况 tomcat 配置文件中 maxThreads 的数量是相对于谁来说的&#xff1f; 以及 spring Controller 中的全局变量:各种bean 对于线程来说是共享的吗&#xff1f; 一、Tomca…...

目标检测 RT-DETR(2023)详细解读

文章目录 主干网络&#xff1a;Encoder&#xff1a;不确定性最小Query选择Decoder网络&#xff1a; 将DETR扩展到实时场景&#xff0c;提高了模型的检测速度。网络架构分为三部分组成&#xff1a;主干网络、混合编码器、带有辅助预测头的变换器编码器。具体来说&#xff0c;先利…...

微信小程序 隐私协议弹窗授权

开发微信小程序的第一步往往是隐私协议授权&#xff0c;尤其是在涉及用户隐私数据时&#xff0c;必须确保用户明确知晓并同意相关隐私政策。我们才可以开发后续的小程序内容。友友们在按照文档开发时可能会遇到一些问题&#xff0c;我把所有的授权方法和可能遇到的问题都整理出…...

题目 3325: 蓝桥杯2025年第十六届省赛真题-2025 图形

题目 3325: 蓝桥杯2025年第十六届省赛真题-2025 图形 时间限制: 2s 内存限制: 192MB 提交: 494 解决: 206 题目描述 小蓝要画一个 2025 图形。图形的形状为一个 h w 的矩形&#xff0c;其中 h 表示图形的高&#xff0c;w 表示图形的宽。当 h 5,w 10 时&#xff0c;图形如下所…...

金众诚业财一体化解决方案如何提升项目盈利能力?

在工程项目管理领域&#xff0c;复杂的全生命周期管理、成本控制的精准性以及业务与财务的高效协同&#xff0c;是决定项目盈利能力的核心要素。随着数字化转型的深入&#xff0c;传统的项目管理方式已难以满足企业对效率、透明度和盈利能力的需求。基于金蝶云星空平台打造的金…...

bitbar环境搭建(ruby 2.4 + rails 5.0.2)

此博客为武汉大学WA学院网络安全课程&#xff0c;理论课大作业Web环境搭建。 博主搭了2天&#xff01;&#xff01;&#xff01;血泪教训是还是不能太相信ppt上的教程。 一开始尝试了ppt上的教程&#xff0c;然后又转而寻找网络资源 cs155源代码和docker配置&#xff0c;做到…...

从零起步搭建基于华为云构建碳排放设备管理系统的产品设计

目录 &#x1f33f; 华为云 IoT&#xff1a;轻松上手碳排放设备管理系统搭建 &#x1f30d; 逐步搭建搭建规划 &#x1f680; 一、系统蓝图&#xff1a;5大核心模块&#xff0c;循序渐进 1️⃣ 设备管理与数据采集层 2️⃣ 数据传输与协议转换层 3️⃣ 数据处理与分析层…...

LabVIEW中EtherCAT从站拓扑离线创建及信息查询

该 VI 主要用于演示如何离线创建 EtherCAT 从站拓扑结构&#xff0c;并查询从站相关信息。EtherCAT&#xff08;以太网控制自动化技术&#xff09;是基于以太网的实时工业通信协议&#xff0c;凭借其高速、高效的特性在自动化领域广泛应用。与其他常见工业通讯协议相比&#xf…...

SpringBoot-11-基于注解和XML方式的SpringBoot应用场景对比

文章目录 1 基于注解的方式1.1 @Mapper1.2 @select1.3 @insert1.4 @update1.5 @delete2 基于XML的方式2.1 namespace2.2 resultMap2.3 select2.4 insert2.5 update2.6 delete3 service和controller3.1 service3.2 controller4 注解和xml的选择如果SQL简单且项目规模较小,推荐使…...