【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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2417912.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!