找回密码
 会员注册
查看: 24|回复: 0

Python新规范pyproject.toml完全解析

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71928
发表于 2024-9-8 14:07:44 | 显示全部楼层 |阅读模式
多谢:thankPython从PEP518开始引入的使用pyproject.toml管理项目元数据的方案。该规范目前已经在很多开源项目中得以支持:Django这个Python生态的顶级项目在5个月之前开始使用pyproject.tomlPytest这个Python生态测试框架的领头羊在4个月之前开始使用pyproject.tomlSciPy这机器学习的库也在3周前切到了pyproject.tomlpoetry包管理可以直拉生成toml文件pyproject.toml实践工程结构PyPI的旧时代的因为规范太松散了,每个项目的结构都五花八门。现在好了,pyproject.toml它在Python项目的结构上都有一个推荐风式了。假设我们软件包的名字是npts,那么整个项目的目录结构在推荐的风格下看起来应该像这样。假设我们软件包的名字是npts,那么整个项目的目录结构在推荐的风格下看起来应该像这样。tree././├──LICENSE├──README.md├──pyproject.toml├──src│└──npts#src下面是包名,包下面是业务代码│├──__init__.py|└──core.py└──tests3directories,5files3directories,5files简单地在src/npts/core.py加一个函数,模拟我们的业务逻辑。#-*-coding:utf8-*-defhello(name:str="world"):returnf"hello{name}."'运行运行pyproject.toml[project]name="npts"version="0.0.1"[build-system]requires=["hatchling"]build-backend="hatchling.build"安装build依赖并用build来打包#安装依赖python3-mpipinstall--upgradebuild#打包python3-mbuild#...#......Successfullybuiltnpts-0.0.1.tar.gzandnpts-0.0.1-py2.py3-none-any.whl编译过程中,会产生如下的输出信息:该命令执行完后,会在dist目录中生成如下红框内的文件:其中,tar.gz文件是源发行版asourcedistribution ,而.whl文件是构建发行版abuiltdistribution。把打包好的软件包上传到PyPItwineuploaddist/npts-0.0.1-py3-none-any.whl或poetry-mpublish#上传发布安装包pip3installnptspyproject.toml完整参数说明[tool.poetry]#是最基本的section,然后它由多个sections组成name#package名字,必填version#package版本号,必填description#package描述,必填license#package许可证,可选authors#package作者,必填maintainers#package维护者,可选readme#packagereadme文件,可选README.rst或README.mdhomepage#package项目网站的URL,可选repository#package指向项目repository的URL,可选documentation#package项目文档的URL,可选keywords#与package相关的关键字列表(最多5个),可选[dependencies]and[dev-dependencies]#默认情况下,poetry会从Pypi库中查找依赖项,只需要写名称、版本就行了[tool.poetry.dependencies]python="^3.9"#重点:必须声明与包兼容的python版本python="^3.9"requests="^2.26.0"[[tool.poetry.source]]#使用私有存储库name='private'url='http://example.com/simple'[extras]#支持可选依赖项...[tool.poetry.dependencies]#这些软件包是强制性的mandatory="^1.0"psycopg2={version="^2.7",optional=true}#可选依赖项列表,可自行选择安装哪些mysqlclient={version="^1.3",optional=true}[tool.poetry.extras]mysql=["mysqlclient"]pgsql=["psycopg2"]当需要安装可选依赖库时poetryinstall--extras"mysqlpgsql"poetryinstall-Emysql-Epgsql
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 19:28 , Processed in 0.450752 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表