コンテンツにスキップ

python の仮想環境作成~実行を自動で行うバッチファイル

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@echo off

set VENV_NAME=.venv
set REQUIREMENTS_NAME=requirements.txt

if not exist %VENV_NAME% (
    echo ----------------------------------------
    echo Create venv
    echo ----------------------------------------
    python -m venv %VENV_NAME%
    if %errorlevel% equ 0 (
        echo OK
    ) else (
        echo Failed
        exit /b 1
    )
)

echo ----------------------------------------
echo Activate venv
echo ----------------------------------------
cd %~dp0
call .venv\Scripts\activate.bat
if %errorlevel% equ 0 (
    echo OK
) else (
    echo Failed
    exit /b 1
)

if exist %REQUIREMENTS_NAME% (
    echo ----------------------------------------
    echo Run pip install
    echo ----------------------------------------
    pip install -r %REQUIREMENTS_NAME%
    if %errorlevel% equ 0 (
        echo OK
    ) else (
        echo Failed
        exit /b 1
    )
)

echo ----------------------------------------
echo Run python
echo ----------------------------------------
echo python -u %1 %2 %3 %4 %5 %6 %7 %8 %9
python -u %1 %2 %3 %4 %5 %6 %7 %8 %9

Bash 版

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/bin/bash

VENV_NAME=.venv
MODULE_NAME=sandbox
REQUIREMENTS_NAME=requirements.txt

if [ ! -d $VENV_NAME ]; then
    python -m venv $VENV_NAME
    source $VENV_NAME/bin/activate
    pip install -r $REQUIREMENTS_NAME
    deactivate
fi

source $VENV_NAME/bin/activate
python -m $MODULE_NAME

エラー落ちしたら再度実行させる

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off

set yyyyMMdd=%date:/=%
set hhmmss=%time::=%
set hhmmss=%hhmmss:~0,6%
set logfilename=%yyyyMMdd%_%hhmmss%.log

echo "実行開始"

cd %~dp0
call .venv\Scripts\activate.bat >> "%logfilename%" 2>&1

set bootcount=0

:Label

set /a bootcount=%bootcount%+1
echo %bootcount%回目の起動です。 >> "%logfilename%" 2>&1
call sample.bat >> "%logfilename%" 2>&1

goto :Label