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

开发环境搭建-2:配置 python 运行环境(使用 uv 管理 python 项目)

在 WSL 环境中配置:WSL2 (2.3.26.0) + Oracle Linux 8.7 官方镜像

UV 介绍

uv软件官网(github 需要梯子,没错这个软件的官网真就是 github 页面):https://github.com/astral-sh/uv

中文官网(github 需要梯子,是官网的个人汉化):https://hellowac.github.io/uv-zh-cn/

为啥选择uv

  1. 快,相比 pip 超快
  2. 一条龙管理:可管理项目、 python 版本、pip 软件包、依赖
    (类似于 conda 的功能)

使用参考:

  1. https://blog.yasking.org/a/python-project-manager-uv.html
  2. https://www.cnblogs.com/wang_yb/p/18635441

uv 安装

这里使用独立安装包进行安装(这样日后可以独立升级uv

WSL中执行以下指令

curl -LsSf https://astral.sh/uv/install.sh | sh

执行过程中如果出现问题,也可以先尝试下载保存 .sh文件,然后再执行文件

# 1. 将文件下载并保存,保存文件名为 install.sh
curl -LsSf https://astral.sh/uv/install.sh -o install.sh# 2. 执行下载的文件
chmod a+x install.sh
./install.sh

安装完成会提示everything's installed!

uv 创建项目

使用uv创建一个 Python 项目:uv init 项目路径(路径+名称)

这里以官方的示例项目为例,在当前目录下创建项目文件夹

uv init example

文件夹中包含依赖、虚拟环境的配置清清单、程序代码文件等

依赖清单(pyproject.toml)中的内容

指定了 python 版本(>=3.13)、依赖(dependencies)

创建 python 虚拟环境

类似 conda 的创建环境指令:conda create -n your_env_name python=X.X

语法:uv venv 环境名称 --python 版本
环境名称、版本可省略:uv venv

uv venv test-V13 --python 3.13

提示创建成功,激活可以输入下面绿色文字

会在当前项目下创建虚拟环境文件夹

激活虚拟环境

类似 conda 的环境切换指令:source activate your_env_name

激活前需要先创建对应的虚拟环境

语法:source 虚拟环境文件夹路径/bin/activate

source

激活成功后,命令行左侧多出一个()区域,显示当前激活的 python 虚拟环境

验证当前 python 指令是否可以执行

uv 配置 pip 加速

类似使用 pip 时在 pip.conf 中配置的 [global] index-url = XXX 配置

虚拟环境激活后,相当于正常使用 python

python 默认的包管理工具 pip 会向国外网站获取数据,速度较慢,需要换成国内的源,加速 pip
参考官方文档,设置uv的全局加速


~/.config/uv/uv.toml文件中,添加以下内容(如果没有文件就大胆新建)

vim ~/.config/uv/uv.toml

修改并保存配置,这里使用清华源

url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true

其他源可参考:https://blog.csdn.net/HandsomeHong/article/details/123963679

安装项目依赖包(对于 Python 项目也可装 python 依赖包)

cd example
uv add ruff

这里可见,uv使用uv add添加 python 依赖包

  1. 这个 API 更偏向于项目管理
    需要先在pyproject.toml中指定需要的包(类似原 python 中的requirements.txt
  2. 实际上用uv pip效果相同,但从大型项目角度不利于维护

安装 python 依赖包

类似 pip install XXX

注意:这个操作需要先激活一个虚拟环境
语法:uv pip install 包名
示例,安装一个requests包(体验极快的速度)

编写程序文件
这里打开示例项目中的hello.py文件,相当于我们编写的程序

vim hello.py

示例程序会输出一句:Hello from example!

执行 Python 脚本

执行示例项项目中的 python 程序

  • 示例项目路径:/opt/uv-py/example.
  • python 文件名称:hello.py
cd /opt/uv-py/example
python hello.py

执行结果,与上面的代码逻辑一致

注意:这里执行的前提是先激活一个 Python 环境,否则无法执行python这个指令

相关文章:

开发环境搭建-2:配置 python 运行环境(使用 uv 管理 python 项目)

在 WSL 环境中配置:WSL2 (2.3.26.0) Oracle Linux 8.7 官方镜像 UV 介绍 uv软件官网(github 需要梯子,没错这个软件的官网真就是 github 页面):https://github.com/astral-sh/uv 中文官网(github 需要梯…...

STM32 ST7735 128*160

ST7735 接口和 STM32 SPI 引脚连接 ST7735 引脚功能描述STM32 引脚连接(示例,使用 SPI1)SCLSPI 时钟信号 (SCK)PA0(SPI1_SCK)SDASPI 数据信号 (MOSI)PA1 (SPI1_MOSI)RST复位信号 (Reset)PA2(GPIO 手动控制)DC数据/命令选择 (D/C)PA3 (GPIO 手…...

【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因

FFN(前馈神经网络)在Transformer模型中先升维再降维的设计具有多方面的重要原因,以下是对这些原因的总结: 1.目标与动机 高维映射空间:FFN的设计目的是通过一系列线性变换来拟合一个高维的映射空间,而不仅…...

VB读写ini配置文件将运行文件放入任务计划程序设置为开机自启动

本示例使用设备: https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1bWmhJZJ&ftt&id562957272162 Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpAppl…...

Java基础 (一)

基础概念及运算符、判断、循环 基础概念 关键字 数据类型 分为两种 基本数据类型 标识符 运算符 运算符 算术运算符 隐式转换 小 ------>>> 大 强制转换 字符串 拼接符号 字符 运算 自增自减运算符 ii赋值运算符 赋值运算符 包括 强制转换 关系运算符 逻辑运算符 …...

数据结构——实验六·散列表

嗨~~欢迎来到Tubishu的博客🌸如果你也是一名在校大学生,正在寻找各种编程资源,那么你就来对地方啦🌟 Tubishu是一名计算机本科生,会不定期整理和分享学习中的优质资源,希望能为你的编程之路添砖加瓦⭐&…...

springboot网上书城

摘 要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括网上书城管理系统的网络应用,在国外网上书城管理系统已经是很普遍的方式,不过国内的书城管理系统可能还处于起步阶段。网上书城管理系统具有网上…...

如何在 Pytest 中使用命令行界面和标记运行测试

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 在前文你已经初步尝试编写了代码和单元测试,并且想要确保它能正常运行。…...

不建模,无代码,如何构建一个3D虚拟展厅?

在数字化浪潮的推动下,众多企业正积极探索线上3D虚拟展厅这一新型展示平台,旨在以更加生动、直观的方式呈现其产品、环境与综合实力。然而,构建一个既专业又吸引人的3D虚拟展厅并非易事,它不仅需要深厚的技术支持,还需…...

github汉化

本文主要讲述了github如何汉化的方法。 目录 问题描述汉化步骤1.打开github,搜索github-chinese2.打开项目,打开README.md3.下载安装脚本管理器3.1 在README.md中往下滑动,找到浏览器与脚本管理器3.2 选择浏览器对应的脚本管理器3.2.1 点击去…...

Unity Line Renderer Component入门

Overview Line Renderer 组件是 Unity 中用于绘制连续线段的工具。它通过在三维空间中的两个或两个以上的点的数组,并在每个点之间绘制一条直线。可以绘制从简单的直线到复杂的螺旋线等各种图形。 1. 连续性和独立线条 连续性:Line Renderer 绘制的线条…...

数据库的三级模式结构与两级映像

三级模式结构与两级映像 什么是数据库的三级模式结构?1. 模式(Conceptual Schema,概念模式)定义特点作用示例 2. 外模式(External Schema,外部模式)定义特点作用举例 3. 内模式(Inte…...

TCP断开通信前的四次挥手(为啥不是三次?)

1.四次握手的过程 客户端A发送 FIN(终止连接请求) A:我要断开连接了(FIN)。A进入FIN_WAIT_1状态,表示请求断开,等待对方确认。 服务器B回复 ACK(确认断开请求,但还未准备…...

win32汇编环境,按字节、双字等复制字符的操作

;运行效果 ;win32汇编环境,按字节、双字等复制字符的操作 ;这是汇编的优点之一。我们可以按字节、双字、四字、八字节等复制或挨个检查字符。 ;有时候,在接收到的一串信息中,比如访问网站时,返回的字串里,有很多0值存在&#xff0…...

.net 项目引用与 .NET Framework 项目引用之间的区别和相同

在 .NET 和 .NET Framework 项目中,引用其他库或项目的方式有一些区别和相同之处。以下是详细的对比: 相同点 引用目的: 目的:无论是 .NET 还是 .NET Framework 项目,引用其他库或项目的主要目的是为了使用这些库或项…...

RabbitMQ--延迟队列

(一)延迟队列 1.概念 延迟队列是一种特殊的队列,消息被发送后,消费者并不会立刻拿到消息,而是等待一段时间后,消费者才可以从这个队列中拿到消息进行消费 2.应用场景 延迟队列的应用场景很多,…...

使用pyboard、micropython和tja1050进行can通信

单片机和can收发器之间tx、rx不需要交叉接线!!! tja1050的rx接Y3、tx接Y4 from pyb import CANcan CAN(1) can.init(modecan.NORMAL, prescaler6, sjw1, bs14, bs22, auto_restartTrue) # 1Mbps的配置,本文使用的micropython1.…...

JS学习之JavaScript模块化规范进化论

前言 JavaScript 语言诞生至今,模块规范化之路曲曲折折。 前言 JavaScript 语言诞生至今,模块规范化之路曲曲折折。社区先后出现了各种解决方案,包括 AMD、CMD、CommonJS 等,而后 ECMA 组织在 JavaScript 语言标准层面&#xff0…...

亚博microros小车-原生ubuntu支持系列:7-脸部检测

背景知识 官网介绍: Face Mesh - mediapipe mpFaceMesh.FaceMesh() 类的参数有:self.staticMode, self.maxFaces, self.minDetectionCon, self.minTrackCon staticMode:是否将每帧图像作为静态图像处理。如果为 True,每帧都会进行人脸检测…...

第二届国赛铁三wp

第二届国赛 缺东西去我blog找👇 第二届长城杯/铁三 | DDLS BLOG web Safe_Proxy 源码题目 from flask import Flask, request, render_template_stringimport socketimport threadingimport htmlapp Flask(__name__)app.route(/, methods"GET"])de…...

缓存商品、购物车(day07)

缓存菜品 问题说明 问题说明:用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大。 结果: 系统响应慢、用户体验差 实现思路 通过Redis来缓存菜品数据,减少数据库查询…...

4【编程语言的鄙视链原因解析】

在编程行业中,是存在鄙视链的,技术越好的圈子越不明显,技术越差的圈子越明显,很多时候为新人营造了错误的观点,我们来针对此类现象为新人们讲解原因 ①心里落差:比如你是学厨师的 你经过过年努力练…...

美团一面面经

第一个问题:介绍一下最近做的项目 第二个问题:我对你项目有个地方比较感兴趣啊。就是你用的那个二级缓存,你的吞吐量有多大啊,为什么需要使用二级缓存? 答: 在二级缓存策略下,笔记详情接口的吞…...

什么是报文的大端和小端,有没有什么记忆口诀?

在计算机科学中,**大端(Big-Endian)和小端(Little-Endian)**是两种不同的字节序(即多字节数据在内存中的存储顺序)。理解这两种字节序对于网络通信、文件格式解析以及跨平台编程等非常重要。 1…...

Spring中BeanFactory和ApplicationContext的区别

目录 一、功能范围 二、Bean的加载时机 三、国际化支持 四、事件发布 五、资源加载 六、使用场景说明 在Spring框架中,BeanFactory和ApplicationContext是两种常见的容器实现方式,它们在功能和使用场景上存在一些显著的差异。本文将详细解析这两种容…...

期货行业专题|基于超融合实现 IT 基础设施现代化与国产化转型实践合集

SmartX 期货行业重要进展 帮助近 60 家期货用户部署 730 超融合节点,含 230 信创节点。 深入 5 大应用场景: 核心生产资源池 主席灾备资源池 信创云资源池 云原生存储与容器资源池 分布式存储资源池 更多超融合金融核心生产业务场景实践&#xf…...

AI新玩法:Flux.1图像生成结合内网穿透远程生图的解决方案

文章目录 前言1. 本地部署ComfyUI2. 下载 Flux.1 模型3. 下载CLIP模型4. 下载 VAE 模型5. 演示文生图6. 公网使用 Flux.1 大模型6.1 创建远程连接公网地址 7. 固定远程访问公网地址 前言 在这个AI技术日新月异的时代,图像生成模型已经成为了创意工作者和开发者手中…...

Jenkins-pipeline Jenkinsfile说明

一. 简介: Jenkinsfile 是一个文本文件,通常保存在项目的源代码仓库中,用于定义 Jenkins Pipeline 的行为。使用 Jenkinsfile 可以使 CI/CD 流程版本化,并且易于共享和审核。 二. 关于jenkinsfile: jenkins的pipeline…...

vue3中为什么引入setup,引入setup是为了解决什么问题,setup的执行时机是什么?返回值是什么

在 Vue 3 中,引入 setup 函数是为了提供一种更加简洁、灵活、逻辑分离和可维护的方式来组织组件的逻辑。setup 使得 Vue 3 在构建应用时,能够更加有效地支持组合式 API(Composition API),解决了 Vue 2 中一些组件逻辑组…...

Ubuntu 安装 docker 配置环境及其常用命令

Docker 安装与配置指南 本文介绍如何在 Ubuntu 系统上安装 Docker,解决权限问题,配置 Docker Compose,代理端口转发,容器内部代理问题等并进行相关的优化设置。参考官方文档:Docker 官方安装指南 一、安装 Docker 1…...