如何激活tox的service环境并在其中运行自定义控制台命令?
解决Tox环境中自定义命令不执行的问题
刚接触Tox很容易遇到这个坑——默认情况下,Tox的testenv会自动尝试运行测试命令(比如pytest),如果你的项目里没配置测试,它就会报错终止,自然不会执行你后面指定的命令。下面给你两种实用解决思路:
方法一:临时执行命令(无需修改配置)
直接在命令里加上--notest参数,告诉Tox跳过默认的测试运行阶段,直接进入目标环境执行你要的命令:
tox -e service --notest -- python __main__.py -someflags
--notest:跳过Tox默认的测试步骤--:分隔Tox自身参数和你要在环境中执行的命令
方法二:修改配置文件(永久适配你的需求)
如果你希望service环境专门用来运行这类自定义命令,可以修改tox.ini的[testenv:service]段,添加commands配置,还能支持传递自定义参数:
[tox] envlist = service skipsdist = true [testenv] install_command = pip install {opts} {packages} basepython= python3.8 [testenv:service] envdir = {toxworkdir}/service deps = -rrequirements.txt setenv = PYTHONPATH=. commands = python __main__.py {posargs} # {posargs}用来捕获命令行传递的额外参数
配置完成后,你可以:
- 直接运行默认命令:
tox -e service - 传递自定义参数:
tox -e service -- -someflags
这里的--后面的参数会被{posargs}捕获,自动替换到命令里。
这样不管是临时执行还是长期使用,都能顺利在service环境中运行自定义控制台命令啦~
内容的提问来源于stack exchange,提问作者DuckGoQuack
相关产品推荐
相关产品推荐

