包装

虽然可以使用TOX来开发和测试应用程序,但它最流行的用途之一是帮助库创建者。库需要首先打包,然后才能安装在虚拟环境中进行测试。来帮助这个 tox 检测工具 PEP-517PEP-518. 这意味着默认情况下,tox将在源代码树之外构建源代码分布。在运行测试命令之前 pip 用于在生成环境中安装源代码发行版。

要创建源代码发行版,可以使用多种工具 PEP-517PEP-518 你可以很容易地用你最喜欢的一种带tox的。从历史上看,仅支持 tox 检测 setuptools ,并且始终使用TOX主机环境从源树构建源分发。这仍然是默认行为。要选择退出此行为,您需要将隔离构建设置为true。

setuptools

使用 pyproject.toml 根文件夹中的文件(旁边 setup.py )可以指定构建要求。

[build-system]
requires = [
    "setuptools >= 35.0.2",
    "setuptools_scm >= 2.0.0, <3"
]
build-backend = "setuptools.build_meta"
# tox.ini
[tox]
isolated_build = True

flit

flit 要求 Python 3 ,但是,生成的源代码发行版可以安装在 python 2 。此外,它不需要 setup.py 文件,因为该信息也会添加到 pyproject.toml 文件。

[build-system]
requires = ["flit_core >=2,<4"]
build-backend = "flit_core.buildapi"

[tool.flit.metadata]
module = "package_toml_flit"
author = "Happy Harry"
author-email = "happy@harry.com"
home-page = "https://github.com/happy-harry/is"
# tox.ini
[tox]
isolated_build = True

诗歌

poetry 要求 Python 3 ,但是,生成的源代码发行版可以安装在 python 2 。此外,它不需要 setup.py 文件,因为该信息也会添加到 pyproject.toml 文件。

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

[tool.poetry]
name = "package_toml_poetry"
version = "0.1.0"
description = ""
authors = ["Name <email@email.com>"]
# tox.ini
[tox]
isolated_build = True

[tox:.package]
# note tox will use the same python version as under what tox is installed to package
# so unless this is python 3 you can require a given python version for the packaging
# environment via the basepython key
basepython = python3