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
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?
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
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.
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
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.