使用tox构建分发用软件包的正确方式
使用tox构建分发软件包的正确方式
两种构建方式的合理性
- 显式testenv:build方式:这是tox生态里构建分发包的常规操作,完全没问题。别纠结“为啥不用pkgenv”,它俩定位不一样。这种方式直接可控,你可以自定义构建命令(比如加
--sdist --wheel指定生成源码包和wheel包),还能给这个环境单独配置依赖(比如指定build工具的版本),执行时跑tox -e build就能生成包,逻辑清晰,也适合CI/CD流程里单独做构建步骤。 - 隐式依赖测试生成包的方式:不推荐用来做正式的分发包构建。这个包是tox执行测试环境时的副作用产物,构建逻辑是tox内部为了安装测试环境而生成的,可能和你想要的分发配置不一致,而且没法直接触发它,只能靠跑其他测试任务顺带生成,灵活性太差,也不利于维护。
pkgenv的真实用途
pkgenv是tox用来统一管理包构建基础配置的段,作用是给所有需要构建包的testenv提供共享配置,不是用来直接定义构建任务的。比如你可以在pkgenv里指定构建工具依赖、构建环境变量,所有需要构建包的testenv都会自动继承这些配置,保证各环境的构建逻辑一致:
[pkgenv] deps = build>=1.0.0 set_env = BUILD_ARGS = --sdist --wheel
关于[pkgenv:build]的用法
这种写法是无效的。pkgenv是全局共享的配置段,不支持像testenv那样加冒号后缀定义特定环境。具体的构建任务还是要放在testenv里定义。
内容的提问来源于stack exchange,提问作者Bastian Venthur
相关产品推荐
相关产品推荐

