Я хочу запланировать запуск сценария Python в 3 часа ночи и прерывать его в 5 часов вечера каждый будний день. Однако проблема возникает, когда мне нужно запустить virtualenv, так как все пакеты установлены в виртуальной среде.

Я могу заставить скрипт запускаться в определенное время, но не могу активировать виртуальную среду (обычно я набираю « env\scripts\activate »). Вот как выглядит мое действие:

Как я могу включить активацию virtualenv и как должно выглядеть мое действие, чтобы сломать сценарий?

4 ответа4

1

Мой скрипт workon.bat не будет правильно устанавливать свойства Env, но эта последняя команда работала в планировщике задач:

cmd /C c:/Users/name/Env/workon_name/Scripts/activate.bat & python run_script.py

0

вы можете создать его в командной строке, используя schtasks и указав путь к исполняемому файлу python внутри вашего каталога виртуальной среды

schtasks /Create /SC HOURLY /TN VirtualEnvPythonTask /TR "PATH_TO_VIRTUAL_ENV_PYTHON_EXECUTABLE PATH_TO_PYTHON_SCRIPT"

В качестве альтернативы вы можете использовать графический интерфейс планировщика задач с помощью Action: start a program Установите Program/script: для исполняемого файла python в пути виртуальной среды и добавьте скрипт python в поле Add arguments (optional):

Например, я использую conda с вызовом среды MSSQL-ETL-ENV. Путь к питону будет

C:\Users\dbaker\AppData\Local\Continuum\anaconda3\envs\MSSQL-ETL-ENV\python
0

Когда вы прямой вызов файла python.exe в виртуальной среде, вы действительно косвенно активация virtualenvironment

Когда вы набираете .\env\Scripts\activate , вы просто изменяете переменную пути, так что путь к вашему каталогу Lib который содержит библиотеки, установленные в вашей виртуальной среде, должен быть первым. В результате, когда python ищет эти библиотеки, он сначала находит эти библиотеки в virtualenv и использует их.

Если у вас нет других ограничений, просто используйте C:\path_to_virtualenvip\python.exe C:\path_to_python_file.py

должно быть достаточно для запуска файла python в вашей виртуальной среде.

0

Что если вы создадите командный файл, например test.bat , который сначала активирует вашу виртуальную среду, а затем запустит ваш скрипт на python? Что-то вроде:

env\scripts\activate
D:\Python\Aldabra\env\Scripts\python.exe "D:\Python_scpt\test.py"

Затем запустите этот скрипт из планировщика задач Windows.

В вашем скрипте я бы также предложил, чтобы часть env\scripts\activate не зависела от места запуска скрипта. т.е. сделать это абсолютным путем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .