Programar [Virtualenv Dependent] Script Python com o Agendador de Tarefas do Windows

0

Eu quero agendar um script Python para começar às 3h e quebrar às 17h todos os dias da semana. No entanto, o problema surge quando eu preciso iniciar o virtualenv, já que todos os pacotes são instalados em um ambiente virtual.

Eu posso fazer o script rodar em um horário específico, mas não consigo ativar o ambiente virtual (normalmente eu digitaria " env\scripts\activate "). Aqui está o que minha ação parece:

Como posso incorporar o virtualenv de ativação e como deve ser minha ação para quebrar o roteiro?

    
por ng150716 04.11.2016 / 00:15

4 respostas

1

Meu script workon.bat não configuraria as propriedades do Env corretamente, mas este comando final funcionou no Agendador de Tarefas:

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

    
por 09.05.2018 / 17:02
0

E se você criar um arquivo de lote, por exemplo test.bat , que primeiro ativa seu ambiente virtual e executa seu script python? Algo como:

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

Depois, execute esse script no Agendador de Tarefas do Windows.

Em seu script, sugiro também que a parte env\scripts\activate não dependa de onde o script é executado. ou seja, torná-lo um caminho absoluto.

    
por 04.11.2016 / 06:42
0

você pode criá-lo na linha de comando usando schtasks e especificando o caminho para o executável python dentro do diretório do ambiente virtual

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

como alternativa, você pode usar a GUI do agendador de tarefas com Action: start a program Configure o Program/script: para o executável python no caminho do ambiente virtual e inclua o script python no campo Add arguments (optional):

Por exemplo, estou usando o conda, com uma chamada de ambiente MSSQL-ETL-ENV. O caminho para o python seria

C:\Users\dbaker\AppData\Local\Continuum\anaconda3\envs\MSSQL-ETL-ENV\python
    
por 25.01.2018 / 04:50
0

Quando você está chamando diretamente o arquivo python.exe no ambiente virtual, você está, de fato, ativando indiretamente o virtualenvironment .

Quando você digita .\env\Scripts\activate , está apenas alterando a variável path, de forma que o caminho para o diretório Lib , que contém as bibliotecas instaladas em seu ambiente virtual, ocorra primeiro. Como resultado, quando python procura por essas bibliotecas, ele encontra essas bibliotecas no virtualenv primeiro e as usa.

Se você não tiver outras restrições, basta usar C:\path_to_virtualenvip\python.exe C:\path_to_python_file.py

deve ser suficiente para executar o arquivo python em seu ambiente virtual.

    
por 19.05.2018 / 20:50