写点什么

使用 poetry 进行 Python 项目开发

用户头像
★忆先★
关注
发布于: 2021 年 06 月 17 日

最近创建了几个 Python 的开源项目(u-coreutilsauto-loggerfastapi-redis-session)。


我在这些项目中开始使用poetry工具进行依赖管理,体验还是相当不错的。

poetry 简介

Poetry是一个基于pyproject.toml的工具,利用poetry可以更加方便地进行 Python 项目的开发、构建、发布和依赖管理。


接下来通过一个例子来简单介绍一下 poetry 的使用。

初始化项目

我们将创建一个库greet,提供一个greet函数来输出"Hello, World",代码和文件结构都很简单。


# project/greet/__init__.pydef greet(name:str='World'):    print(f'Hello, {name}')
复制代码


project目录下运行poetry init(可以通过pip install -U poetry进行poetry工具的安装),会有很多提示信息用于确认项目的名称、版本、作者、协议、Python 版本,也可以在init过程中指定项目的依赖和dev依赖。


poetry init运行成功后,solution目录下会生成一个pyproject.toml文件。


可以手动设置一些项目的其他信息,例如仓库地址或者README文件的位置。


[tool.poetry]name = "greet"version = "0.1.0"description = ""authors = ["duyixian <duyixian1234@qq.com>"]license = "MIT"repository = "https://github.com/duyixian1234/greet"readme = "README.md"
[tool.poetry.dependencies]python = "^3.8"
[tool.poetry.dev-dependencies]
[build-system]requires = ["poetry-core>=1.0.0"]build-backend = "poetry.core.masonry.api"
复制代码

初始化虚拟环境

运行poetry shell命令或者poetry install命令,poetry会为项目创建一个虚拟环境(poetry shell命令会直接激活创建的虚拟环境)。


可以通过poetry config virtualenvs.path命令查看虚拟环境的位置。

添加依赖

运行poetry add [--dev] <package>命令来为项目定义依赖或者dev依赖.


或者直接在pyproject.toml[tool.poetry.dependencies]或者[tool.poetry.dev-dependencies]位置手动填写依赖,手动更改依赖后需要运行poetry update命令 将依赖安装到虚拟环境中。


运行poetry update命令可以更新依赖到最新的版本。

构建项目

简单地运行poetry build就可以完成项目的构建过程,会在dist目录下生成.tar.gz.whl两种格式的包(都可以直接通过pip install安装)。


→poetry buildBuilding greet (0.1.0)  - Building sdist  - Built greet-0.1.0.tar.gz  - Building wheel  - Built greet-0.1.0-py3-none-any.whl
复制代码

发布包到 pypi

运行poetry publish [--build]命令,就会将上一步构建好的包发布到pypi, 过程中需要填写 pypi 的账户名和密码, 或者通过 poetry config pypi-token.pypi <token>设置pypi token


在这个例子中我们的发布会失败,因为pypi上已经有greet这个包了。


想将包发布到其他repository的话可以参考官方的说明

总结

poetry还是一个相当不错的工具,尤其是想发布自己的 Python 库到pypi的时候,不用再维护较难管理的setup.py了。


原文

发布于: 2021 年 06 月 17 日阅读数: 9
用户头像

★忆先★

关注

还未添加个人签名 2018.11.12 加入

Python后端开发

评论

发布
暂无评论
使用poetry进行Python项目开发