首页 > 编程语言 >Python 依赖管理神器 Poetry 深入指南

Python 依赖管理神器 Poetry 深入指南

时间:2024-08-07 23:23:33浏览次数:14  
标签:依赖 项目 Python app Poetry poetry 神器

Poetry 依赖管理详细教程

引言

在现代软件开发中,依赖管理是项目成功的关键。Python 开发者现在有了一个新的选择:Poetry。Poetry 是一个现代的 Python 包管理工具,旨在简化 Python 项目的创建、打包和发布。它提供了一种更直观和高效的方式来管理项目的依赖关系,相较于传统的 pip,Poetry 具有诸多优势。本文将深入探讨 Poetry 的核心功能、使用方法以及最佳实践,帮助您更好地管理 Python 项目的依赖。

什么是 Poetry?

Poetry 是一个用于依赖管理和打包的 Python 工具,它通过以下特点简化了 Python 项目的管理工作:

  • 虚拟环境管理:自动创建和管理虚拟环境。
  • 依赖锁定:使用 poetry.lock 文件确保依赖版本的一致性。
  • 配置文件:使用 pyproject.toml 统一管理项目配置。
  • 命令行工具:提供命令行接口,简化项目操作。

安装 Poetry

你可以选择以下任一方法安装 Poetry:

# 使用 curl 安装
curl -sSL https://install.python-poetry.org | python3 -

# 使用 pipx 安装 (推荐)
pipx install poetry

创建一个新的 Poetry 项目

开始一个新项目,只需运行:

poetry new my_project

这将创建一个包含 pyproject.tomlpoetry.lock 的新项目目录。

添加依赖

向项目中添加依赖:

poetry add requests numpy

这会在 pyproject.toml 中声明依赖,并在 poetry.lock 中锁定版本。

查看依赖

查看项目依赖:

poetry show

安装依赖

安装项目依赖至虚拟环境:

poetry install

激活虚拟环境

激活项目虚拟环境:

poetry shell

更新依赖

更新项目依赖至最新版本:

poetry update

生成 requirements.txt

生成 requirements.txt 文件:

poetry export -f requirements.txt

构建项目

构建项目,生成分发包:

poetry build

发布项目

将项目发布到 PyPI:

poetry publish

pyproject.toml 文件

pyproject.toml 文件定义了项目的基本配置和依赖:

[tool.poetry]
name = "my_project"
version = "0.1.0"
description = ""
authors = ["Your Name <[email protected]>"]

[tool.poetry.dependencies]
python = "^3.9"
requests = "^2.28.1"
numpy = "^1.23.5"

[tool.poetry.dev-dependencies]
pytest = "^7.2.2"

poetry.lock 文件

poetry.lock 文件自动生成,锁定依赖版本。

常用命令

  • poetry new:创建新项目。
  • poetry add:添加依赖。
  • poetry remove:移除依赖。
  • poetry update:更新依赖。
  • poetry show:展示依赖。
  • poetry install:安装依赖。
  • poetry shell:打开虚拟环境。
  • poetry build:构建项目。
  • poetry publish:发布项目。

以 Docker 方式部署

Docker 为应用提供了一个隔离和可移植的运行环境。结合 Poetry,你可以轻松打包你的 Python 应用:

  1. 创建 Dockerfile

    在项目根目录下创建 Dockerfile

    # 使用官方 Python 运行时作为父镜像
    FROM python:3.9-slim
    
    # 设置工作目录
    WORKDIR /app
    
    # 复制 Poetry 配置文件和依赖锁定文件到工作目录
    COPY pyproject.toml poetry.lock ./
    
    # 安装 Poetry
    RUN curl -sSL https://install.python-poetry.org | python -
    
    # 使用 Poetry 安装依赖
    RUN poetry install --no-dev
    
    # 复制项目文件到工作目录
    COPY . .
    
    # 应用构建的命令
    CMD ["poetry", "run", "python", "app.py"]
    
  2. 构建 Docker 镜像

    docker build -t my_flask_app .
    
  3. 运行 Docker 容器

    docker run -p 5000:5000 my_flask_app
    

示例:使用 Poetry 创建一个 Flask 应用

  1. 创建项目

    poetry new my_flask_app
    
  2. 添加 Flask 依赖

    poetry add flask
    
  3. 创建 Flask 应用 (app.py):

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/')
    def hello():
        return 'Hello, World!'
    
    if __name__ == '__main__':
        app.run()
    
  4. 运行应用

    poetry run python app.py
    

总结

Poetry 不仅为 Python 项目提供了强大的依赖管理功能,还通过 Docker 支持简化了部署流程。通过本教程,你应该能够创建、管理和发展你的 Python 项目,同时确保依赖的一致性和项目的可移植性。

更多信息

如果你对使用 Poetry 有任何疑问,或者希望探索更多高级功能,请随时提问。

标签:依赖,项目,Python,app,Poetry,poetry,神器
From: https://blog.csdn.net/shanxuanang/article/details/141003656

相关文章

  • python的函数、魔法方法和案例
    1.python函数中self的用法在Python中,self 是一个对当前实例(对象)的引用,用于访问属于该类的变量和方法。在定义类的方法时,通常需要将 self 作为第一个参数。这允许在类的实例上调用方法时,自动将实例本身作为参数传递给方法。classPerson:def__init__(self,name......
  • 【视频讲解】Python灰色关联度分析直播带货效用、神经退行性疾病数据
    原文链接:https://tecdat.cn/?p=37273原文出处:拓端数据部落公众号 分析师:JiayiDeng 本文展示如何用灰色关联度分析的直播带货效用及作用机制研究,并结合一个分析神经退行性疾病数据实例的代码数据,为读者提供一套完整的实践数据分析流程。一、研究难点直播带货作为新兴产业,缺......
  • 线性方程组迭代算法的Python实现
    更多精彩,关注博客园主页,不断学习!不断进步!我的主页csdn很少看私信,有事请b站私信博客园主页-发文字笔记-常用有限元鹰的主页内容:ABAQUS数值模拟相关Python科学计算开源框架,编程学习笔记哔哩哔哩主页-发视频-常用FE-有限元鹰的个人空间内容:模拟案例网格划分游戏视频,......
  • 最小二乘法原理推导+代码实现[Python]
    0.前言本文主要介绍了最小二乘法公式推导,并且使用Python语言实现线性拟合。读者需要具备高等数学、线性代数、Python编程知识。请读者按照文章顺序阅读。绘图软件为:geogebra5。1.原理推导1.1应用最小二乘法在购房中的应用通常涉及房价预测和房屋定价方面。这种统计方法通......
  • python opencv图片简单操作
    一、从文件读取图片cv2.imread(filename,flags) 参数: filepath:读入image的完整路径 flags:标志位,{cv2.IMREAD_COLOR,cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED} cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道,可用1作为实参替代 cv2.IMREAD_GRAYSCALE:读入......
  • Python 中的排序与 ASCII 编码解析
    1.引言    不知道你有没有想过用Python进行一些排序的工作,对于一些数量比较小的数字集合(例如:1、15、32、79、6、55)我们可以迅速发现最大的79和最小的1,但当这个数量非常大的时候,我们找大小就很费劲了,而这种繁琐的工作就应该派计算机出马了2.比大小  a.常规数字比......
  • Python使用Memcached示例
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • 2024年华为OD机试真题-欢乐的周末-Python-OD统一考试(C卷D卷)
    2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述:小华和小为是很要好的朋友,他们约定周末一起吃饭。通过手机交流,他们在地图上选择了多个聚餐地点(由于自然地形等原因,部分聚餐地点不可达),求小华和小为都能到达的聚餐地点有多少个?输入描述......
  • Python并发编程
    简介多线程:threading,利用cpu和io可以同时执行的原理,让CPU不会等待IO完成多进程:multiprocess,利用多核CPU的能力,真正的并行执行任务异步IO:asynio,在单线程利用CPU和IO同时执行的原理,实现函数异步执行 使用Lock对共享资源加锁,防止冲突访问使用Queue实现不......
  • 19.python之自定义函数
    python之自定义函数一、函数的介绍1、函数定义:函数是一个组织好,可重复使用,实现单一或联合的代码段。2、函数作用:a、降低代码的冗余、b、增加代码的复用性c、提高程序的拓展性d、封装二、python的结构三、函数的使用1、格式:def函数名(变量):执行语句函数名(实际参数)#调......