jenkin中激活python虚拟环境后,后面的脚本不执行

问题:

需要在jenkins中执行pytest的脚本,使用的是虚拟环境,

但是在使用如下脚本后activate.bat之后的脚本都没有执行

原因:

  激活虚拟环境时批处理本身会重开一个cmd窗口, 所以会断开,可以手动在cmd中激活试试,中间会闪一下

解决:

  修改为一个命令使用&&连接,如下

 分析原因

venv\Scripts\activate.bat

这行的意思是执行 另一个批处理文件 . 如果您希望在执行另一个批处理文件之后,控制流返回到下面的行,那么您必须通过 call 命令:

call venv\Scripts\activate.bat

控件在默认情况下不会返回到父脚本,因此当您从批处理文件内部运行第二个脚本时,父脚本将被有效终止。

您可以使用 call 命令。这样,一旦第二个脚本完成,流就返回到父脚本。如脚本:

@ECHO OFF
IF NOT EXIST ".\venv\" (
    ECHO | SET /p msg="Creating virtual environment..."
    python -m venv venv
    ECHO OK
    call venv\Scripts\activate.bat
    python -m pip install --upgrade pip setuptools
    pip install -r requirements.txt
) ELSE (
    venv\Scripts\activate.bat
)
python runner.py

方式二:

类似的脚本中,我可以通过执行与&连接的下一个命令来实现;,您可以尝试以下操作:

@ECHO OFF
IF NOT EXIST ".\venv\" (
    ECHO | SET /p msg="Creating virtual environment..."
    python -m venv venv
    ECHO OK
    venv\Scripts\activate.bat & (python -m pip install --upgrade pip setuptools && pip install -r requirements.txt && python runner.py)
) ELSE (
    venv\Scripts\activate.bat & python runner.py
)
posted @ 2023-04-05 12:38  浩浩学习  阅读(495)  评论(0)    收藏  举报