Python项目管理工具Poetry使用示例详解

 更新时间:2023年09月04日 10:30:14   作者:冷冻工厂  
这篇文章主要为大家介绍了Python项目管理工具Poetry使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1. 导读

本文将介绍一个目前十分流行,且用于众多Python项目中依赖管理打包的工具,包含基本的安装与使用。

2. Poetry

Poetry 是Python 中用于依赖管理打包的工具。它允许您声明项目所依赖的库,并将为您管理(安装/更新)它们。

Poetry 提供了一个锁定文件以确保可重复安装,并且可以构建您的项目以进行分发。

2.1. *toml文件

pyproject.toml可以算是Poetry的核心配置文件了,里面包含了项目的相关信息,使用的环境信息,安装的依赖信息,主要有一下配置:

# 项目包的名字
name = "my-package" 
# 版本
version = "0.1.0"
# 包的描述
description = "A short description of the package."
# 许可证
license = "MIT"
# 作者
authors = ["冷冻工厂 <storyice@163.com>",]
# 维护者
maintainers = ["冷冻工厂 <storyice@163.com>",]
# READMD文件
readme = ["docs/README1.md", "docs/README2.md"]
# 包的介绍主页
homepage = "https://python-poetry.org/"
# 仓库地址
repository = "https://github.com/python-poetry/poetry"
# 文档
documentation = "https://python-poetry.org/docs/"

3. 实战

3.1. 安装

在Linux、macOS、Windows (WSL)中安装Poetry

  • Linux、macOS、Windows (WSL)
curl -sSL https://install.python-poetry.org | python3 -
  • 升级现有Poetry
poetry self update

3.2. 新建项目

  • 创建新的项目
poetry new project-name
# 项目名 与 文件夹名 不同
poetry new folder-name --name project-name
# 使用src项目结构(可选)
poetry new --src project-name
# 初始化已经存在的项目
cd project-name-dir
poetry init

3.3. 环境管理

poetry首先会检查当前项目是否存在虚拟环境,如果存在,保持现有环境,如果没有,会自动创建一个与当前依赖相匹配的环境。

  • 选择项目环境
poetry env use /full/path/to/python
# 如果解释器已经添加到环境变量中
poetry env use python3.7
poetry env use 3.7  # 同上,二选一
  • 显示当前环境信息
poetry env info

  • 显示与当前项目相关的环境
poetry env list

  • 删除环境
poetry env remove /full/path/to/python
# 同时删除多个环境
poetry env remove python3.6 python3.7 python3.8
# 一次性删除全部环境 
poetry env remove --all

 小编建议设置下面配置,其作用是将虚拟环境的文件夹放置于项目文件夹下

poetry config virtualenvs.in-project true

3.4. 依赖管理

使用Poetry进行添加依赖,有两种方式。一种是在命令行中,直接使用相关命令来添加依赖,或者删除依赖。另外一种是,通过修改项目中的pyproject.toml文件,来管理依赖。

  • 命令行管理
# 添加依赖
poetry add <lib>
# 添加dev依赖
poetry add <lib> --dev  # poetry add package-name -D
# 删除依赖
poetry remove <lib>
# 更新依赖
poetry update
# 锁定依赖版本
poetry lock
# 列出全部依赖项
poetry show
# 列出陈旧的依赖项
poetry show --outdated
# 搜索指定的包
poetry search <name>
  • 配置文件管理
[tool.poetry]
name = "project-name"
version = "0.1.0"
description = ""
authors = ["Swindler &lt;jzj@1033199817@qq.com&gt;"]
readme = "README.md"
packages = [{include = "project_name"}]

[tool.poetry.dependencies]
python = "^3.8"
# 在此直接添加,如 0.1.0 版本的numpy
numpy = "0.1.0"

# 如果不知道指定的版本,可以用*代替,Poetry会自动选择合适的版本
numpy = "*"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

根据配置文件更新依赖

poetry update

 依赖的版本指定,支持不等式(简单易用)

>= 1.2.0
> 1
< 2
!= 1.2.3

3.5. 换源

Poetry也支持换源,加速依赖的下载速度.

  • 清华源
# 将下方配置添加至pyproject.toml末尾即可
[[tool.poetry.source]]
name = "tsinghua-source"
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
default = true  # 仅从定义仓库获取
  • 阿里源
# 将下方配置添加至pyproject.toml末尾即可
[[tool.poetry.source]]
name = "aliyun-source"
url = " http://mirrors.aliyun.com/pypi/simple/"
default = true  # 仅从定义仓库获取

3.6. requirement

Poetry也支持requirement.txt操作

  • 导出requirement.txt
poetry export -f requirements.txt --output requirements-prod.txt --without-hashes
  • 导入requirement.txt
cat requirements.txt|xargs poetry add

以上就是Python项目管理工具Poetry使用示例详解的详细内容,更多关于Python Poetry项目管理的资料请关注脚本之家其它相关文章!

相关文章

  • python基于Bokeh库制作子弹图及瀑布图示例教程

    python基于Bokeh库制作子弹图及瀑布图示例教程

    这篇文章主要为大家介绍了python基于Bokeh库制作子弹图及瀑布图的实现示例教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2021-10-10
  • 如何用Python从桌面读取二维码信息详解

    如何用Python从桌面读取二维码信息详解

    二维码作为一种信息传递的工具,在当今社会发挥了重要作用,下面这篇文章主要给大家介绍了关于如何用Python从桌面读取二维码信息的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-10-10
  • Python脚本实现自动替换文件指定内容

    Python脚本实现自动替换文件指定内容

    这篇文章主要为大家详细介绍了如何编写一个py脚本,可以实现自定义替换py文件里面指定内容,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-03-03
  • python实现Android与windows局域网文件夹同步

    python实现Android与windows局域网文件夹同步

    这篇文章主要给大家详细介绍了python实现Android与windows局域网文件夹同步,文中有详细的代码示例和图文介绍,具有一定的参考价值,需要的朋友可以参考下
    2023-09-09
  • Python中的localtime()方法使用详解

    Python中的localtime()方法使用详解

    这篇文章主要介绍了Python中的localtime()方法使用详解,是Python入门学习的基础知识,需要的朋友可以参考下
    2015-05-05
  • Python3操作MongoDB增册改查等方法详解

    Python3操作MongoDB增册改查等方法详解

    这篇文章主要介绍了Python操作MongoDB增册改查等方法详解,需要的朋友可以参考下
    2020-02-02
  • Python字符串对象实现原理详解

    Python字符串对象实现原理详解

    这篇文章主要介绍了Python字符串对象实现原理详解,在Python世界中将对象分为两种:一种是定长对象,比如整数,整数对象定义的时候就能确定它所占用的内存空间大小,另一种是变长对象,在对象定义时并不知道是多少,需要的朋友可以参考下
    2019-07-07
  • python3.4中清屏的处理方法

    python3.4中清屏的处理方法

    在本篇文章里小编给大家分享的是关于python3.4中清屏的处理方法,有兴趣的朋友们可以跟着学习下。
    2020-07-07
  • python学习笔记之调用eval函数出现invalid syntax错误问题

    python学习笔记之调用eval函数出现invalid syntax错误问题

    python是一门多种用途的编程语言,时常扮演脚本语言的角色。一般来说,python可以定义为面向对象的脚本语言,这个定义把面向对象的支持和面向脚本语言的角色融合在一起。很多时候,人们常常喜欢用“脚本”和不是语言来描述python的代码文件。
    2015-10-10
  • Flask框架请求钩子与request请求对象用法实例分析

    Flask框架请求钩子与request请求对象用法实例分析

    这篇文章主要介绍了Flask框架请求钩子与request请求对象用法,结合实例形式详细分析了Flask框架请求钩子与request请求对象相关原理、用法及操作注意事项,需要的朋友可以参考下
    2019-11-11

最新评论