首页 > 编程语言 >Python项目管理: Poetry

Python项目管理: Poetry

时间:2022-09-24 23:23:36浏览次数:83  
标签:依赖 name Python Poetry poetry 项目管理 env

Python项目管理: Poetry

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 = ["冷冻工厂 <[email protected]>",]

# 维护者
maintainers = ["冷冻工厂 <[email protected]>",]

# 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文件,来管理依赖。

  1. 命令行管理
# 添加依赖
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>
  1. 配置文件管理
[tool.poetry]
name = "project-name"
version = "0.1.0"
description = ""
authors = ["Swindler <jzj@[email protected]>"]
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知识与资料,请评论区留言或私聊小编回复“Python资料”,可领取《流畅的Python》。

本文由mdnice多平台发布

标签:依赖,name,Python,Poetry,poetry,项目管理,env
From: https://www.cnblogs.com/swindler/p/16726959.html

相关文章

  • Python4-eg
    实例01importdatetime                        #导入日期时间类#定义一个列表mot=["今天星期一:\n坚持下去不是因为我很坚强,而是因为我别无......
  • python代码编写---PEP8规范
    PEP8规范---StyleGuideforPythonCodePEP8简介1.PEP是PythonEnhancementProposal的缩写,通常翻译为:Python增强提案enhance增强改善(V)Proposal提议建议(n)2.......
  • Python 判断字符串是否包含中文
    一、原理中文字符的编码范围是:\u4e00-\u9fff只要编码在此范围就可判断为中文字符 二、函数defis_chinese(self,string):"""检查整个字符串是否包......
  • Python常用标准库之os
    模块导入方式:importosos模块是Python标准库中的一个用于访问操作系统相关功能的模块,os模块提供了一种可移植的使用操作系统功能的方法。使用os模块中提供的接口,可以实现......
  • Python 模型超参数调优
    Python模型超参数调优1.导读本文将对超参数进行简要的解释,并推荐一本利用Python进行超参数调整的书籍,其中包含了许多超参数调整方法。2.超参数在机器学习的上下文中......
  • Python cv2(Opencv) 图像运算
    OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效,由一系列C函数和少......
  • Python cv2(OpenCV) 图像处理
    OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效,由一系列C函数和少......
  • 基于python-socket的端口扫描
    前言端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关)。端口扫描是计算机解密......
  • 利用python自动发送邮件
    #-*-coding:utf-8-*-#安装yagmail#pipinstallyagmail#yagmail.SMTP(user,password,host)user:发件人的邮箱地址,password:邮箱的SMTP服务授权码,host:邮箱的......
  • 将表格内不一样的数据,用Python自动发送给不同的人,实现高效摸鱼
    事情是这样的,罪恶的资本家老板,快下班了给我发一个压缩包,让我把数据发给客户微信,搞完就可以下班了,我心想这么好,一个文件不是让我直接就提前下班吗,万万没想到…我就知道,......