Как в cmd скрипте запустить сначала окружение, а потом сам скрипт(python)

Нужен батник который за раз зайдёт в окружение и запустит скрипт.

Вот так просто не получается:

@.\venv\Scripts\activate.bat
@.\bot_main.py
@pause

Ответы (2 шт):

Автор решения: eri

в bot_main.py первой строчкой:

#!полныйпуть\venv\bin\python.exe

или пропиши путь к site-packages в sys.path в самом скрипте

или пропиши переменные окружения PYTHONHOME

или просто копирни батник activate.bat и там в конце допиши старт скрипта - что, пожалуй, самый простой вариант.

→ Ссылка
Автор решения: Stanislav Volodarskiy

Прямой вызов бат-файла из бат-файла крадёт управление.

set_z.bat:

@echo off
echo in set_z.bat
set Z=1

main.bat:

@echo off
set Z=0
echo Z is %Z%
echo before set_z.bat
set_z.bat
echo after set_z.bat
echo Z is %Z%

Запускаем main.bat и управление не возвращается обратно в основной батник:

Z is 0
before set_z.bat
in set_z.bat

Если использовать call ...

@echo off
set Z=0
echo Z is %Z%
echo before set_z.bat
call set_z.bat
echo after set_z.bat
echo Z is %Z%

... то управление возвращается и окружение изменилось как нужно:

Z is 0
before set_z.bat
in set_z.bat
after set_z.bat
Z is 1

Для полноты картины третий вариант. Если нужно вызвать батник, но сохранить окружение, то cmd /c ...:

@echo off
set Z=0
echo Z is %Z%
echo before set_z.bat
cmd /c set_z.bat
echo after set_z.bat
echo Z is %Z%

Управление возвращается обратно, но окружение не тронуто:

Z is 0
before set_z.bat
in set_z.bat
after set_z.bat
Z is 0
→ Ссылка