我正在使用。 Azure管道命令行代理作业中的代码。但是Venv_Project\scripts\activate
之后的命令不会显示在输出中。可能是什么问题?
ECHO START
SET var=%cd%
ECHO %var%
python -m venv Venv_Project
SET var=%cd%
ECHO %var%
ECHO Venv created and now activating
Venv_Project\scripts\activate
SET var=%cd%
ECHO %var%
ECHO END
答案 0 :(得分:0)
Azure管道命令行代理作业似乎忽略了python环境激活后的命令?
我可以一边重现此问题。为了进一步验证该命令是否已执行,还是已执行但未显示在输出中。
我创建了一个简单的python脚本来创建.txt
文件,因此我们可以通过验证.txt
文件的存在来验证命令是否已执行:
file = open('D:/a/1/s/Test.txt', 'w');
file.write('hello, \n world!')
当我在不激活python环境的情况下使用私有代理构建命令行任务时,它成功创建了.txt
文件。但是,如果我激活python环境激活,它将不会创建该文件。
因此,这进一步确定该命令未与Azure devops一起执行。但是我无法进一步找出Azure devops无法在python虚拟环境中执行命令的原因。
要解决此问题,建议您在开发者社区中报告此问题:
https://developercommunity.visualstudio.com/spaces/21/index.html
这是我们针对产品问题的主要论坛。感谢您帮助我们构建更好的Azure DevOps。
希望这会有所帮助。
答案 1 :(得分:0)
将Venv_Project\scripts\activate
替换为call Venv_Project\scripts\activate
运行批处理和.CMD文件
Azure Pipelines将您的内联脚本放入 内容放入临时批处理文件(.cmd)中以运行它。什么时候 您要从Windows CMD中的另一个批处理文件运行一个批处理文件, 您必须使用call命令,否则第一个批处理文件是 终止。这将导致Azure Pipelines运行预期的 编写脚本,直到第一个批处理文件,然后运行该批处理文件, 然后结束这一步。第一个脚本中的其他行不会 跑。在执行批处理文件之前,您应该始终先挂起呼叫 一个Azure Pipelines脚本步骤。
重要
您可能没有意识到自己正在运行批处理文件。例如,在 Windows,以及您使用npm install -g安装的所有工具, 实际上是批处理文件。始终使用呼叫npm运行NPM Windows中命令行任务中的命令。