今天在搜集数据集的时候遇到了pyproject.toml配置文件,点开来一看发现有许多依赖包和配置信息,查找资料一看,还可以用pyproject.toml进行依赖包管理。
该文件的部分由多个部分组成。tool.poetry pyproject.toml
以项目<''https://github.com/tiangolo/fastapi/blob/master/pyproject.toml"> fastapi 的pyproject为例,介绍一下pyproject.toml的组成部分:
这告诉像pip这样的工具用flit构建你的项目。这是 PEP 517 定义的标准。对于任何使用Flit的新项目。
[build-system]
requires = ["flit"]
build-backend = "flit.buildapi"
发布包的一些信息,作者,首页等等、。
[tool.flit.metadata]
module = "fastapi"
author = "Sebastián Ramírez"
author-email = "[email protected]"
home-page = "https://github.com/tiangolo/fastapi"
发布到pypi上的分类信息,require字段是此包所需的 PyPI 中的其他包的列表。
[tool.flit.metadata]
# ...
classifiers = [
"Intended Audience :: Information Technology",
"Intended Audience :: System Administrators",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python",
"Topic :: Internet",
"Topic :: Software Development :: Libraries :: Application Frameworks",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development",
"Typing :: Typed",
"Development Status :: 4 - Beta",
"Environment :: Web Environment",
"Framework :: AsyncIO",
"Framework :: FastAPI",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Topic :: Internet :: WWW/HTTP :: HTTP Servers",
"Topic :: Internet :: WWW/HTTP",
requires = [
"starlette==0.19.1",
"pydantic >=1.6.2,!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<2.0.0",
]
description-file = "README.md"
requires-python = ">=3.6.1"
]
除了基本 url (和 ) 之外,您还可以在该部分中指定任何自定义 URL项目路径。项目的 URL,例如其 Github 存储库。
[tool.flit.metadata.urls]
Documentation = "https://fastapi.tiangolo.com/"
可选依赖项,用于增强包,但不是必需的,包含着一些测试环境的依赖等等。每个可选功能所需的包列表。这些要求的指定格式与指定的格式相同。
[tool.flit.metadata.requires-extra]
test = [
"pytest >=6.2.4,<7.0.0",
"pytest-cov >=2.12.0,<4.0.0",
"mypy ==0.910",
"flake8 >=3.8.3,<4.0.0",
"black == 22.3.0",
"isort >=5.0.6,<6.0.0",
"requests >=2.24.0,<3.0.0",
"httpx >=0.14.0,<0.19.0",
"email_validator >=1.1.1,<2.0.0",
"sqlalchemy >=1.3.18,<1.5.0",
"peewee >=3.13.3,<4.0.0",
"databases[sqlite] >=0.3.2,<0.6.0",
"orjson >=3.2.1,<4.0.0",
"ujson >=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0",
"python-multipart >=0.0.5,<0.0.6",
"flask >=1.1.2,<3.0.0",
"anyio[trio] >=3.2.1,<4.0.0",
# types
"types-ujson ==4.2.1",
"types-orjson ==3.6.2",
"types-dataclasses ==0.6.5; python_version<'3.7'",
]
doc = [
"mkdocs >=1.1.2,<2.0.0",
"mkdocs-material >=8.1.4,<9.0.0",
"mdx-include >=1.4.1,<2.0.0",
"mkdocs-markdownextradata-plugin >=0.1.7,<0.3.0",
# TODO: upgrade and enable typer-cli once it supports Click 8.x.x
# "typer-cli >=0.0.12,<0.0.13",
"typer >=0.4.1,<0.5.0",
"pyyaml >=5.3.1,<7.0.0",
]
dev = [
"python-jose[cryptography] >=3.3.0,<4.0.0",
"passlib[bcrypt] >=1.7.2,<2.0.0",
"autoflake >=1.4.0,<2.0.0",
"flake8 >=3.8.3,<4.0.0",
"uvicorn[standard] >=0.12.0,<0.18.0",
"pre-commit >=2.17.0,<3.0.0",
]
all = [
"requests >=2.24.0,<3.0.0",
"jinja2 >=2.11.2,<4.0.0",
"python-multipart >=0.0.5,<0.0.6",
"itsdangerous >=1.1.0,<3.0.0",
"pyyaml >=5.3.1,<7.0.0",
"ujson >=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0",
"orjson >=3.2.1,<4.0.0",
"email_validator >=1.1.1,<2.0.0",
"uvicorn[standard] >=0.12.0,<0.18.0",
]
安装软件包时,可以使用以下选项指定附加功能:-E|–extras
poetry install --extras "mysql pgsql"
poetry install -E mysql -E pgsql
-f , --ini-file
指定要构建的模块的配置文件的路径。缺省值为 。pyproject.toml
--version
显示正在使用的 Flit 版本。
--help
在命令行界面上显示帮助。
--debug
显示有关 flit 正在执行的操作的更详细日志。
Build a wheel and an sdist (tarball) from the package.
--format
限制为发布或 .通常应同时发布这两种格式。wheelsdist
--setup-py
在 sdist 中生成一个文件,以便可以通过旧版本的 pip 进行安装。setup.py
Build a wheel and an sdist (tarball) from the package, and upload them to PyPI or another repository.用于上传到pypi上
--repository
要将包上载到的存储库的名称。应与 中的某个部分匹配。缺省值为 。~/.pypircpypi
--pypirc
要使用的 .pypirc 配置文件。缺省值为 。~/.pypirc
在系统上安装软件包。
默认情况下,软件包安装在Flit本身安装的同一Python环境中;使用 --python 或 FLIT_INSTALL_PYTHON 来覆盖它。
如果您没有修改环境的权限(例如Linux上的系统Python),Flit可以进行用户安装。使用 --user 或 --env 标志以一种或另一种方式强制这样做。
-s, --symlink
将模块符号链接到站点包中,而不是复制它,以便可以测试更改而无需重新安装模块。
--deps
要安装的依赖项。、 、 或 之一。 并安装附加组件 、 和 。违约。all production develop none all developtest docdev all
--extras
哪个命名了要为其安装依赖项的额外功能。指定安装所有可选依赖项或以逗号分隔的附加组件列表。缺省值取决于 。all–deps
--user
执行用户本地安装。如果 flit 不在 virtualenv 或 conda env 中(如果环境的库目录是只读的并且为 true),则这是默认设置。site.ENABLE_USER_SITE
--env
安装到环境中 - 与 --user 相反。这是 virtualenv 或 conda env 中的默认值(如果环境的库目录是可写的或 false)。site.ENABLE_USER_SITE
通过提示输入有关当前目录中模块的信息来创建新的配置文件。pyproject.toml
Poetry是Python中用于依赖管理和打包的工具。和flit及其类似,详见https://python-poetry.org/docs/
https://www.jianshu.com/p/9fb0d69134d2
https://flit.pypa.io/en/latest/cmdline.html
https://python-poetry.org/docs/pyproject/
https://www.cnblogs.com/dongfangtianyu/p/14382420.html