You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在tox中创建并使用临时目录的可靠实现方法

tox环境中生成使用临时文件夹的解决方案

错误原因说明

  • 直接在testenv配置段给自定义变量赋值mktemp -d:tox的配置项默认是静态字符串,不会自动执行shell命令,因此读取时只会拿到原始字符串,不会执行对应的命令。
  • 在commands下单独写tmpdir = mktemp -d:tox默认会把commands下每一行第一个空格前的内容识别为要执行的可执行文件,此处将tmpdir当成了系统命令调用,因此会触发找不到可执行文件的错误。同时,单起一行的变量赋值只在当前进程生效,后续commands行是独立进程,也无法读取该变量。

推荐方案

方案1:使用tox内置临时目录(最优)

tox默认会为每个测试环境自动生成专属的一次性临时目录,每次运行tox时会自动清空重建,完全满足「一次性可丢弃」的需求,直接使用内置变量{envtmpdir}即可,无需自行生成:

[testenv:var-test]
description = 使用tox内置临时目录
commands =
    # 直接输出临时目录路径
    echo {envtmpdir}
    # 示例:在临时目录下创建文件
    touch {envtmpdir}/test_output.txt

方案2:自定义生成临时目录

如果确实需要自行调用mktemp生成临时目录,需要将变量赋值和后续使用逻辑放在同一个shell进程中执行,用sh -c将多条命令包裹即可:

[testenv:var-test]
description = 自定义生成临时目录
commands =
    # 单条命令直接使用命令替换
    echo $(mktemp -d)
    # 多条命令使用同一shell进程,变量可复用
    /bin/sh -c 'tmpdir=$(mktemp -d); echo "自定义临时目录路径: $tmpdir"; touch $tmpdir/custom_test.txt'

内容的提问来源于stack exchange,提问作者Sparkler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:48:03