当前位置: 首页 > 后端技术 > Python

了解更多nox教程,轻松掌握命令行用法

时间:2023-03-25 22:47:16 Python

English|命令行用法来源|nox官方文档翻译|:本翻译基于CCBY-NC-SA4.0许可协议,内容略有改动。转载请保留原始出处,请勿用于商业或非法用途。接上一篇《Python 任务自动化工具:nox 的配置与 API》调用方法nox一般在命令行调用:nox也可以通过Python解释器调用nox:python3-mnoxListavailablesession列出所有可用的session,包括参数化的session:nox-lnox--listnox--list-sessions运行所有会话你可以在没有任何参数的情况下执行nox以运行每个会话:nox会话按照它们在noxfile中出现的顺序执行。指定一个或多个会话默认情况下,nox将运行noxfile中定义的所有会话。但是,您可以选择使用--session、-s或-e运行特定集:nox--sessiontestsnox-slinttestsnox-elint您还可以使用NOXSESSION环境变量:NOXSESSION=lintnoxNOXSESSION=lint,testsnoxnox会话将按照指定的顺序运行。您还可以使用pytest样式的关键字来过滤测试会话:nox-k"notlint"nox-k"testsandnotlint"指定参数化会话如果您有参数化会话,例如:@nox.parametrize('django',['1.9','2.0'])deftests(session,django):...然后运行??nox--sessiontests实际上将运行该会话的所有参数化版本。如果您想使用一组特定的参数化参数运行会话,您可以使用会话名称指定它们:nox--session"tests(django='1.9')"nox--session"tests(django='2.0')“重用虚拟环境默认情况下,nox每次运行时都会删除并重新创建虚拟环境(virtualenv)。一般来说,这对大多数项目和持续集成环境来说都很好,因为pip的缓存使得重新安装相当快。但是,在某些情况下,在运行之间重用虚拟环境更为有利。使用-r或--reuse-existing-virtualenvs:nox-rnox--reuse-existing-virtualenvs如果noxfile设置了nox.options.reuse_existing_virtualenvn,你可以在命令行使用--no-reuse-existing-virtualenvs来覆盖noxfile的设置。如果任何会话失败则停止默认情况下,即使一个会话失败,nox也会继续运行所有会话。一旦第一个会话失败,你可以使用--stop-on-first-error让nox中止:nox--stop-on-first-error如果noxfile设置了nox.options.stop_on_first_error,你可以在命令行中使用--no-stop-on-first-error覆盖noxfile的设置。缺少解释器时会话失败默认情况下,nox将跳过找不到Python解释器的会话。如果你想让nox将这些会话标记为失败,你可以使用--error-on-missing-interpreters:nox--error-on-missing-interpreters如果在noxfile中设置了nox.options.error_on_missing_interpreters,你可以这样做在命令行上使用--no-error-on-missing-interpreters覆盖noxfile设置。禁止外部程序默认情况下,nox会警告未安装在会话虚拟环境中的程序,但最终会允许您运行它。如果nox也使用任意外部程序而没有显式将external=True传递给session.run,则可以使用--error-on-external-run使其失败:nox--error-on-external-run如果noxfile有nox。options.error_on_external_run设置,您可以在命令行上使用--no-error-on-external-run覆盖noxfile设置。指定其他配置文件如果由于某种原因你的noxfile没有命名为noxfile.py,你可以使用--noxfile或-f:nox--noxfilesomething.pynox-fsomething.py将虚拟环境默认存储在其他目录中在大多数情况下,nox将虚拟环境存储在./.nox中,但是,您可以使用--envdir更改此设置:nox--envdir/tmp/envs跳过除install命令之外的所有内容在许多情况下,只有nox运行安装命令,例如为离线测试准备环境,或者为测试重新创建虚拟环境。您可以使用--install-only跳过运行命令。例如,给出这个noxfile:@nox.sessiondeftests(session):session.install("pytest")session.install(".")session.run("pytest")run:nox--install-onlywillboth运行两个安装命令,但跳过运行命令:nox>Runningsessiontestsnox>Creatingvirtualenvusingpython3.7in./.nox/testsnox>pipinstallpytestnox>pipinstall.nox>Skippingpytestrun,as--install-only是set.nox>会话测试成功。强制执行非交互式行为session.interactive可用于判断nox是在交互式终端上运行(例如,一个实际的人在他们的计算机上运行它)还是非交互式终端(例如,串行集成系统)。@nox.sessiondefdocs(session):...ifsession.interactive:nox.run("sphinx-autobuild",...)else:nox.run("sphinx-build",...)有时,需要强制nox将会话视为非交互式。您可以使用--non-interactive参数执行此操作:nox--non-interactive这将使session.interactive始终返回False。控制彩色输出默认情况下,如果您在交互式终端中使用nox,它会输出彩色日志。但是,如果您将stderr重定向到一个文件,如果您没有使用交互式终端,或者如果设置了环境变量NO_COLOR,那么nox将以纯文本形式输出。您可以使用--nocolor和--forcecolor标志手动控制nox的输出。例如,这将始终输出彩色日志:nox--forcecolor但是,这永远不会输出彩色日志:nox--nocolor控制命令的详细程度默认情况下,nox仅显示失败命令的输出,当传递给命令时silent=False,没有输出。通过将--verbose传递给nox,无论silent参数如何,所有命令的所有输出都将显示。输出机器可读的报告你可以通过指定--report:nox--reportstatus.json输出json格式的报告WindowsNox暂时支持在Windows上运行。但是,根据您的Windows版本,Python和虚拟环境可能会出现问题。有关详细信息,请参阅以下内容:tox问题260Python问题24493Virtualenv问题774Windows上的Python二进制文件可通过适用于Windows的Python启动程序(py)获得。例如,通过确定py-3.5将调用哪个可执行文件来查找Python3.5。如果测试需要特定的32位版本的Python,请使用X.Y-32作为版本。Convertnoxfromtox实验性支持将tox.ini文件转换为noxfile.py文件。它还不支持tox的所有功能,只是为了完成过度转换的大部分机械工作,您可能仍需要对转换后的noxfile.py进行一些更改。要使用转换器,请使用tox_to_nox安装nox:pipinstall--upgradenox[tox_to_nox]然后,只需在与tox.ini相同的目录中运行tox-to-nox:tox-to-nox这将基于tox中的环境.ini创建一个noxfile.py。一些注意事项:构建环境可以工作,但会转换为单独的环境。tox-to-nox不够智能,无法将其转换为参数化会话,但手动提取通用配置进行参数化应该是微不足道的。由于tox解析其配置的方式,所有替换都将在转换时引入。这意味着您需要用适当的变量替换noxfile.py中的静态字符串。几个不太常用的tox选项尚未实现,但可能。如果您遇到您认为有用的功能,请提交功能请求。Shell完成将适当的命令添加到Shell的配置文件以在启动时运行。您可能需要重新启动或重新登录才能使自动完成生效。basheval"$(register-python-argcompletenox)"zsh#要激活zsh的完成,你需要在zsh中启用#bashcompinit:autoload-Ubashcompinitbashcompinit#然后你可以为nox启用完成:eval"$(register-python-argcompletenox)"tcsheval`register-python-argcomplete--shelltcshnox`fishregister-python-argcomplete--shellfishnox|系列、Python进阶系列、好书推荐系列、技术写作、优质英文推荐与翻译等,欢迎关注。