【python虚拟环境管理】【mac m3】使用poetry管理python项目

news/2024/8/27 6:46:00 标签: python, 开发语言

文章目录

  • 一. 为什么选择poetry
  • 二. poetry相关操作
    • 1. 创建并激活环境
    • 2. 依赖包管理
      • 2.1. 安装项目依赖
      • 1.2. 管理不同开发环境的依赖
      • 1.3. 依赖维护
      • 1.4. 项目相关

Poetry是Python中用于依赖管理和打包的工具。它允许您声明项目所依赖的库,并将为您管理(安装/更新)它们。Poetry提供了一个锁定文件,以确保可重复安装,并可以构建用于分发的项目。

一. 为什么选择poetry

在项目规模扩大时,依赖关系管理变得更为复杂,此时为什么Poetry 这样的工具变得必要:

  1. 增加的依赖关系数量: 随着项目规模的增大,项目通常会引入更多的依赖关系。不同的依赖可能需要特定版本,而这可能导致依赖冲突。

  2. 环境难以重现: 当项目的依赖关系数量增加时,使用传统的依赖管理工具(如 pip 或 Conda)可能会导致环境难以重现。这意味着在不同的开发环境或部署环境中,依赖的版本和配置可能会有所不同,从而增加了出现问题的可能性。

  3. 维护困难: 仅仅依靠 pip 或 Conda 进行依赖管理,可能需要手动维护 requirements.txt 或 environment.yml 等文件。这种方式可能导致配置文件的冗长和复杂性,增加了维护项目一致性的难度。

  4. Poetry 的优势:

    • Poetry 提供了一个新的方法来管理 Python 项目的依赖关系和环境。它通过统一的 pyproject.toml 文件来管理项目的依赖,提供了更简洁、更清晰的方式定义项目的依赖关系和版本约束。
    • Poetry 还支持锁定依赖版本,确保在不同的环境中都可以重现相同的依赖关系,从而增强了项目的可重现性和一致性。
    • Poetry 还包括便捷的虚拟环境管理功能,可以帮助隔离项目环境,避免与系统或其他项目的依赖冲突。
    • 此外,Poetry 支持项目的打包和发布,使得分发 Python 应用程序变得更加简单和一致。

 

二. poetry相关操作

1. 创建并激活环境

  1. 创建新的 Poetry 项目
# my-project 虚拟环境名称
#这个命令会创建一个名为 `my-project` 的新目录,并在其中生成一个基本的 Poetry 项目结构。  
# 可以使用 --path 或 -p 选项来指定一个特定的目录。
poetry new my-project

  1. 项目初始化
# 如果是已有项目转为使用poetry作为依赖管理,可以进行初始化
poetry init
  1. 激活虚拟环境
# 在项目创建后,通过如下命令来激活环境
# 这个命令会安装 `pyproject.toml` 中定义的所有依赖项,并激活虚拟环境。

poetry install
  1. 查看当前环境信息
poetry env info

 

2. 依赖包管理

2.1. 安装项目依赖

# 安装pyproject.toml文件中的全部依赖

poetry install

# 安装最新稳定版本的flask
poetry add numpy

# 指定具体的版本
poetry add flask=2.22.0 

当然也可以使用pip来安装依赖,只要注意pip安装在此虚拟环境下。

 

1.2. 管理不同开发环境的依赖

通过添加配置参数–dev来区分不同环境下的依赖包。


# 指定为开发依赖,会写到pyproject.toml中的[tool.poetry.dev-dependencies]区域
poetry add pytest --dev 

# 只安装非development环境的依赖,一般部署时使用
poetry install --no-dev  

 

1.3. 依赖维护

# 更新所有锁定版本的依赖包
poetry update

#更新指定依赖包
poetry update numpy

# 卸载依赖包
poetry remove numpy

 

1.4. 项目相关

# 查看项目安装的依赖
poetry show

# 查看可以更新的依赖
poetry show --outdated

# 树形结构查看项目安装的依赖
poetry show -t

 

参考:
https://blog.csdn.net/qq_40851623/article/details/135769991


http://www.niftyadmin.cn/n/5558793.html

相关文章

Spring Boot 学习总结(34)—— spring-boot-starter-xxx 和 xxx-spring-boot-starter 区别?

一、Spring Starter 简介 Spring Starter 是 Spring Boot 提供的一种便捷方式,帮助开发者快速集成和配置 Spring 应用中所需的依赖。每个 Starter 都是一个预配置的依赖集,可以自动配置应用的一部分或特定功能。这些 Starter 旨在消除手动编写大量样板代码和配置的需求。 1…

【Neural signal processing and analysis zero to hero】- 1

The basics of neural signal processing course from youtube: 传送地址 Possible preprocessing steps Signal artifacts (not) to worry about doing visual based artifact rejection so that means that before you start analyzing, you can identify those data epic…

html超文本传输协议

在今天的Web开发学习中&#xff0c;我掌握了一些HTML和CSS的基础知识&#xff0c;下面我将分享我的学习笔记&#xff0c;帮助大家快速构建一个简单的Web界面。 一、HTML基础标签 1. 网站头 使用<title>标签定义网页的标题。 html <title>我的第一个网页</t…

景区客流统计系统提升服务精准度

在当今旅游业蓬勃发展的时代&#xff0c;景区面临着越来越多的挑战和机遇。如何在保障游客良好体验的同时&#xff0c;实现景区的高效管理和可持续发展&#xff0c;成为了摆在景区管理者面前的重要课题。景区客流统计系统的出现&#xff0c;为解决这一问题提供了有力的支持&…

什么是决策树?

1. 什么是决策树&#xff1f; 决策树&#xff08;Decision Tree&#xff09;是一种常用的机器学习算法&#xff0c;用于解决分类和回归问题。它通过构建树结构来表示决策过程&#xff0c;分支节点表示特征选择&#xff0c;叶节点表示类别或回归值。 2. 决策树的组成部分 决策…

设计模式-概述*

1.代码的质量的评判 可维护性&#xff1a;不破坏原有代码设计以及不引入新的bug的前提下&#xff0c;能够快速修改或新增代码&#xff1b;可读性&#xff1a;人类能理解的代码&#xff08;编程规范-命名、函数是否冗长、类是否过大等&#xff09;&#xff1b;可扩展性&#xff…

【python虚拟环境管理】使用conda安装jupyter、将conda环境写入notebook的kernel中

文章目录 一. 什么是 jupyter1. jupyter notebook2. JupyterLab3. Jupyter Kernel 二. 使用conda安装Jupyter1. 安装jupyter note2. 将环境写入notebook的kernel中3. Jupyter note运维命令4. (可选)设置Jupyter 登录密码 三. jupyter note可视化界面操作1. 使用notebook2. 其他…

Django F()函数

F()函数的作用 F()函数在Django中是一个非常强大的工具&#xff0c;主要用于在查询表达式中引用模型的字段。它允许你在数据库层面执行各种操作&#xff0c;而无需将数据加载到Python内存中。这不仅提高了性能&#xff0c;还允许你利用数据库的优化功能。 字段引用 在查询表达…