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

【UV-1】python项目管理工具发展

文章目录python项目管理工具pip安装依赖虚拟环境创建环境复现pyproject.tomlpyproject.toml简介pyproject.toml作用pyproject.toml基本结构使用场景场景 1用 pip 安装项目含依赖场景 2打包项目生成 wheel / 源码包场景 3用 Poetry 管理项目更简洁的依赖 / 环境管理UV传统装依赖的流程UV使用流程python项目管理工具python项目管理有两个路径conda和python官方的项目管理工具。conda支持多语言有自己的配置文件python解释器都是自己编译的走的路线和python官方不同。python官方的项目管理工具经历了长时间的发展。pip安装依赖通常对于一个python项目而言都需要有很多的依赖。如果在运行一个python脚本或者是项目的时候没有安装对应的依赖会报错误。这个时候初学python的同学会直接在终端中使用pip安装对应的包但是直接使用pip安装依赖会直接安装到全局环境当中对于不同项目容易出现依赖冲突的问题和依赖地狱问题一个库依赖其他库。pipinstallxxxxx虚拟环境创建为了解决依赖冲突问题和依赖地狱问题出现了虚拟环境。python3-mvenv .venv.venv是虚拟环境的名称实际上是可以任意取的。.venv名称可以被主流IDE进行识别使用其他虚拟环境名称在使用的时候需要重新激活。# 虚拟环境激活命令source.venv/bin/activate激活虚拟环境之后然后再使用pip命令进行安装对应的依赖包就会将依赖安装到对应的虚拟环境当中。每个项目都可以拥有自己的虚拟环境。这时又有一个问题如何在将自己的项目分享给别人的时候进行环境复现。环境复现为了解决环境复现问题通常的做法是用下面的命令pip freeze这个命令会列出当前python环境中所有的依赖和版本。通常在执行这个命令的时候会通过重定向的方式将对应的依赖和版本输出到一个文件当中。pip freezerequirements.txt其他人拿到自己的项目之后只需要在虚拟环境中直接通过执行pipinstall-rrequirements.txt就可以安装项目中所有的依赖。通过pip的方式实现环境复现存在以下两个问题pip 不能区分哪些依赖是直接依赖哪些是间接依赖。对于一些环境复现的时候容易安装很多没有用的包。pip 在卸载依赖的时候也不会识别间接依赖容易造成部分依赖卸载不掉也不使用。pyproject.tomlpyproject.toml简介pyproject.toml 是 Python 项目的标准化配置文件基于 TOMLTom’s Obvious, Minimal Language格式取代了过去分散的 setup.py、setup.cfg、requirements.txt 等配置文件的部分功能成为 Python 项目的「统一入口」。它最早由 PEP 518 提出核心目标是定义构建 Python 项目所需的「构建系统」如 setuptools、poetry、flit统一管理项目的元数据名称、版本、作者、依赖、构建规则、工具配置如 pytest、black、mypy等。简单类比pyproject.toml 就像 Python 项目的「身份证 说明书」告诉工具链「这个项目怎么构建、依赖什么、用什么规则检查代码」。pyproject.toml作用指定构建系统告诉 Python 打包工具如 pip「用哪个工具来构建这个项目」解决了过去 setup.py 执行前依赖缺失的问题。统一管理项目配置替代setup.cfg管理项目元数据名称、版本、许可证替代部分requirements.txt管理依赖还能集成代码格式化black、测试pytest、类型检查mypy等工具的配置无需再创建多个零散的配置文件如.pytest.ini、.black.toml。标准化项目结构所有主流工具pip、poetry、pipenv、setuptools都已支持pyproject.toml跨环境 / 工具使用时无需适配不同配置格式。pyproject.toml基本结构pyproject.toml采用「分段式」配置每个段落[section]对应一类配置以下是最常用的核心示例# pyproject.toml 示例 [build-system] # 1. 构建系统配置PEP 518 必选 # requires: 构建项目所需的依赖如 setuptools、wheel # build-backend: 指定构建后端常用 setuptools.build_meta 或 poetry.core.masonry.api requires [setuptools61.0, wheel] build-backend setuptools.build_meta [project] # 2. 项目元数据PEP 621 标准化 name my_python_project # 项目名称必填 version 0.1.0 # 版本号必填 authors [ # 作者信息 { name Your Name, email youremail.com } ] description A simple Python project with pyproject.toml # 简短描述 long_description file: README.md # 长描述关联 README long_description_content_type text/markdown license { file LICENSE } # 许可证 requires-python 3.8 # 支持的 Python 版本 classifiers [ # 项目分类PyPI 展示 Programming Language :: Python :: 3, License :: OSI Approved :: MIT License, Operating System :: OS Independent, ] # 项目依赖等价于 requirements.txt dependencies [ requests2.28.0, numpy1.24.0 ] # 可选依赖如开发环境、测试环境 [project.optional-dependencies] dev [ pytest7.0, black23.0, mypy1.0 ] [tool.black] # 3. 工具配置集成 black 代码格式化 line-length 88 target-version [py38, py39] exclude /( \.git | \.venv | build )/ [tool.pytest.ini_options] # 集成 pytest 配置 testpaths [tests] pythonpath [src] addopts -v --covsrc使用场景场景 1用 pip 安装项目含依赖如果项目根目录有 pyproject.toml直接执行运行# 安装核心依赖pipinstall.# 安装核心依赖 开发依赖[project.optional-dependencies] 中的 dev 组pipinstall.[dev]场景 2打包项目生成 wheel / 源码包运行# 安装构建工具pipinstallbuild# 基于 pyproject.toml 打包生成 dist/ 目录含 .whl 和 .tar.gzpython-mbuild场景 3用 Poetry 管理项目更简洁的依赖 / 环境管理Poetry 是基于 pyproject.toml 的主流工具替代 pip virtualenv运行# 安装 Poetrypipinstallpoetry# 初始化项目自动生成 pyproject.tomlpoetry new my_project# 安装依赖读取 pyproject.toml 中的 dependenciespoetryinstall# 新增依赖自动更新 pyproject.toml 和 poetry.lockpoetryaddrequests# 新增开发依赖poetryadd--devpytest关键注意事项pyproject.toml 必须放在项目根目录TOML 格式对语法敏感如等号前后空格、引号、列表格式建议用编辑器VS Code、PyCharm的 TOML 插件校验不同工具的配置段前缀不同如 [tool.black]、[tool.pytest]需参考对应工具的文档若同时存在 setup.py/setup.cfg优先级pyproject.toml setup.cfg setup.py建议逐步迁移到 pyproject.toml。总结本质Python 项目的标准化配置文件统一管理构建、依赖、工具配置替代零散的旧配置文件核心作用指定构建系统、管理项目元数据 / 依赖、集成工具配置实现项目配置的标准化使用方式在项目根目录编写 TOML 格式配置通过 pip/build/Poetry 等工具读取配置完成安装、打包、依赖管理等操作。pyproject.toml问题需要手动维护包的版本UVPoetry、UV、PDM实际上是对于pip和.venv的高*级封装。但是提供给用户的接口更加简单。传统装依赖的流程# 创建虚拟环境python-mvenv.venv# 激活虚拟环境source.venv/bin/activate# 手动边界pyproject.toml文件edit pyproject.toml# 安装依赖pipinstall-e.UV使用流程# 安装包uvaddxxxx自动创建虚拟环境自动激活虚拟环境自动修改pyproject.toml文件自动安装对应的包在拿到其他人的项目之后如果项目中提供了pyproject.toml文件。只需要使用uv执行以下命令即可完成以上所有步骤uvsync使用uv完成虚拟环境之后还可以通过uv进行执行python脚本,这个命令会自动激活虚拟环境在虚拟环境上下文中进行执行代码。uv run main.py

相关文章:

【UV-1】python项目管理工具发展

文章目录python项目管理工具pip安装依赖虚拟环境创建环境复现pyproject.tomlpyproject.toml简介pyproject.toml作用pyproject.toml基本结构使用场景场景 1:用 pip 安装项目(含依赖)场景 2:打包项目(生成 wheel / 源码包…...

步骤解析:Java如何通过Apache Commons FileUpload实现大文件夹的秒传断点?

我,一个被大文件上传“折磨”到想秃头的PHP程序员,想和你唠唠这事儿 最近接了个外包项目,客户是做本地档案馆数字化的,老板拍着桌子说:“小老弟,咱们这系统得支持20G文件夹上传!用户每天传几千…...

Kook Zimage 真实幻想 Turbo开发指南:VSCode调试技巧大全

Kook Zimage 真实幻想 Turbo开发指南:VSCode调试技巧大全 用对工具,调试效率翻倍。本文将手把手带你配置VSCode调试环境,掌握实用调试技巧,让Kook Zimage开发事半功倍。 1. 为什么选择VSCode进行Kook Zimage开发? 刚开…...

避坑指南:为什么你的大语言模型总说‘胡话’?5种知识增强方案对比

大语言模型知识增强实战:5种方案解析与场景化选型指南 当ChatGPT将"阿波罗登月"描述成好莱坞摄影棚的产物,或是当某医疗问答机器人给出与最新临床指南相悖的建议时,我们不得不正视大语言模型(LLM)的"知…...

智能问数技术路线对比

引言2025-2026 年,智能问数(Natural Language Query)市场迎来爆发式增长。从互联网大厂到传统 BI 厂商,从国际巨头到创业公司,各玩家纷纷入局。但技术路线百花齐放的同时,企业决策者面临核心问题&#xff1…...

YOLOv8训练参数调优实战:从batch size到学习率的完整避坑指南

YOLOv8训练参数调优实战:从batch size到学习率的完整避坑指南 在计算机视觉领域,YOLOv8作为当前最先进的目标检测框架之一,其训练过程中的参数调优直接决定了模型性能的上限。本文将深入剖析YOLOv8训练中的关键参数设置,通过实战案…...

AI Agent可观测性工程:从分布式追踪到智能运维

AI Agent可观测性工程:从分布式追踪到智能运维 【免费下载链接】agentops Python SDK for agent evals and observability 项目地址: https://gitcode.com/GitHub_Trending/ag/agentops 一、可观测性挑战:AI Agent时代的运维新范式 随着大语言模…...

MarkItDown:多格式文档转换解决方案的实战指南

MarkItDown:多格式文档转换解决方案的实战指南 【免费下载链接】markitdown 将文件和办公文档转换为 Markdown 的 Python 工具 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown 在信息爆炸的今天,如何高效处理来自不同渠道、不同格…...

Gemma-3-270m效果对比:Ollama中Gemma-3-270m vs Gemma-2-2B生成质量

Gemma-3-270m效果对比:Ollama中Gemma-3-270m vs Gemma-2-2B生成质量 1. 引言:小模型的大潜力 最近在AI模型领域出现了一个有趣的现象:参数更少的新模型,在效果上居然能媲美甚至超越参数更多的老模型。Gemma-3-270m就是一个典型的…...

2026年亲测:合肥系统门窗厂家真实案例分享

行业痛点分析当前,系统门窗领域面临诸多技术挑战。首先,随着消费者对居住环境舒适度和节能要求的不断提高,传统门窗在隔音、隔热、气密性等方面的表现已难以满足需求。其次,随着建筑风格的多样化,门窗设计需要更加灵活…...

ChatGPT与Siri深度整合:AI辅助开发的架构设计与避坑指南

ChatGPT与Siri深度整合:AI辅助开发的架构设计与避坑指南 你是否曾对Siri的回答感到意犹未尽,或者希望它能像ChatGPT一样进行深度、连贯的对话?作为一名开发者,我常常思考如何让现有的语音助手变得更“聪明”。最近,我…...

Wan2.1 VAE应用:自动化软件测试中的图像对比与异常检测

Wan2.1 VAE应用:自动化软件测试中的图像对比与异常检测 你有没有遇到过这种情况?辛辛苦苦写了一套UI自动化测试脚本,跑了几次都好好的,结果换个显示器分辨率,或者环境光线稍微一变,测试就莫名其妙地失败了…...

YOLO12多目标跟踪初探:DeepSORT+YOLO12x联合部署效果展示

YOLO12多目标跟踪初探:DeepSORTYOLO12x联合部署效果展示 1. 引言:从“看见”到“追踪” 想象一下,你正在观看一场足球比赛的直播。摄像机镜头紧紧跟随着带球的球员,即使他穿梭在人群中,画面也能稳定地锁定他。这种“…...

轻量级微信JS接口封装工具:让前端开发更高效

轻量级微信JS接口封装工具:让前端开发更高效 【免费下载链接】wechat.js 微信相关的 js 操作:分享、网络、菜单 项目地址: https://gitcode.com/gh_mirrors/we/wechat.js 你是否曾遇到过在微信浏览器中集成分享功能时,面对复杂的微信A…...

InstructPix2Pix效果展示集:油画风、复古胶片感,指令生成惊艳作品

InstructPix2Pix效果展示集:油画风、复古胶片感,指令生成惊艳作品 1. 惊艳效果开场:当AI成为你的私人修图师 想象一下这样的场景:你有一张普通的照片,只需要用英语说一句话,比如"把这张照片变成梵高…...

Gemma-3-12b-it低代码集成指南:API接口封装与前端调用示例

Gemma-3-12b-it低代码集成指南:API接口封装与前端调用示例 你是不是已经体验过Gemma-3-12b-it多模态工具那丝滑的图文对话功能,但心里却在想:这个强大的能力,能不能集成到我自己的项目里?比如,我想在自己的…...

探索硬件健康监测:开源工具的技术实践与价值解析

探索硬件健康监测:开源工具的技术实践与价值解析 【免费下载链接】LibreHardwareMonitor Libre Hardware Monitor, home of the fork of Open Hardware Monitor 项目地址: https://gitcode.com/GitHub_Trending/li/LibreHardwareMonitor 2023年某数据中心因C…...

Electron 30 + VSCode 2026双引擎协同失效?深度剖析渲染进程冻结真相及跨进程IPC加速补丁

第一章:Electron 30 VSCode 2026双引擎协同失效的系统性定位当 Electron 30(基于 Chromium 124、Node.js 20.9、V8 12.4)与 VSCode 2026.1(启用新式 WebWorker 沙箱与跨进程 IPC 重写模块)共存于同一桌面工作区时&…...

QuickRecorder:轻量化智能录屏工具的效率革命

QuickRecorder:轻量化智能录屏工具的效率革命 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https://gitcode.com/GitHub_Trending/qu…...

突破式P2P文件传输革新:FilePizza如何重塑浏览器端数据交换范式

突破式P2P文件传输革新:FilePizza如何重塑浏览器端数据交换范式 【免费下载链接】filepizza :pizza: Peer-to-peer file transfers in your browser 项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza 技术原理:WebRTC如何像"数字…...

揭秘asitop:探索Apple Silicon性能监控技术的深度应用

揭秘asitop:探索Apple Silicon性能监控技术的深度应用 【免费下载链接】asitop Perf monitoring CLI tool for Apple Silicon 项目地址: https://gitcode.com/gh_mirrors/as/asitop 一、技术原理解析:从硬件计数器到用户界面的数据流 解读性能监…...

FLUX.1-dev-fp8-dit创新应用:游戏素材自动化生成管线

FLUX.1-dev-fp8-dit创新应用:游戏素材自动化生成管线 游戏美术素材制作一直是开发过程中最耗时耗力的环节之一,传统流程中一个角色原画需要美术师花费数天时间,场景设计更是需要周为单位来计算。但现在,借助FLUX.1-dev-fp8-dit模型…...

舆情监测系统技术架构深度解析:Infoseek如何用AI中台重构数字公关

引言:从“爬虫时代”到“AI中台时代”在技术演进的长河中,舆情监测系统经历了三个代际的变迁:1.0时代(爬虫时代):基于简单的网络爬虫关键词匹配,功能仅限于“发现”信息,无法“理解”…...

效果惊艳!Z-Image-Turbo生成照片级真实感图像作品集展示

效果惊艳!Z-Image-Turbo生成照片级真实感图像作品集展示 1. 开篇:重新定义AI图像生成的标准 当AI绘画工具已经遍地开花时,Z-Image-Turbo的出现依然让人眼前一亮。这个来自阿里通义实验室的开源模型,用实际表现证明了一件事&…...

健身美体实践复盘:亲测这些案例超有效!

在全民健身意识觉醒的当下,健身美体已从单一的运动行为演变为涵盖体态管理、功能修复、身心平衡的系统工程。行业报告显示,近三年国内运动健康市场规模年均增长超15%,其中瑜伽普拉提类课程复购率达68%,成为都市人群改善体态、缓解…...

Codeforces Round 4 C. Registration system

题目概述 Codeforces Round 4 C题“Registration system”要求实现一个用户注册系统。当用户尝试注册一个用户名时,若该用户名未被占用,则直接注册;若已被占用,则系统自动生成一个新用户名,格式为原用户名拼接一个最小…...

MTools开箱即用:独立开发者5分钟搭建AI编程+文档生成工具箱

MTools开箱即用:独立开发者5分钟搭建AI编程文档生成工具箱 1. 五分钟快速上手指南 1.1 极简安装流程 MTools的安装过程简单到令人难以置信。无论你使用哪种操作系统,都能在几分钟内完成部署: Windows用户:直接下载.exe安装包&…...

Wan2.2-T2V-A5B与Dify集成:零代码构建企业视频生成应用

Wan2.2-T2V-A5B与Dify集成:零代码构建企业视频生成应用 最近和几个做电商的朋友聊天,他们都在头疼一件事:产品上新快,但宣传视频的制作周期太长,外包成本高,自己又没专业团队。每次看到竞品快速推出精美的…...

行业首创·智巡新标杆|AI智脑赋能,四足机器人重构数字制造车间运维

最近某世界500强企业工厂成功落地 “数字制造车间智能机器人巡检解决方案”。该方案实现制造业业内首个打通 MES 系统实现巡检任务联动下发、首个对接 LLM 大模型实现自然人机对话两大核心突破,搭配的四足机器人具有超强环境适应性,可以实现数字制造车间…...

Qwen3-0.6B-FP8在中小企业落地:2GB显存支撑多实例并发问答

Qwen3-0.6B-FP8在中小企业落地:2GB显存支撑多实例并发问答 1. 引言:小模型,大能量 如果你是一家中小企业的技术负责人,或者是一个独立开发者,想在自己的服务器上部署一个智能对话服务,是不是经常被高昂的…...