|
Python - Ativando Venv no serviço do Linux | |
| @CanalQb | ||
Como ativar ambientes virtuais Python no Linux com systemd
O uso de ambientes virtuais (venv) é altamente recomendado para isolar dependências em projetos Python. Neste guia, você aprenderá como ativar ambientes virtuais em um servidor Linux e configurá-los como serviços usando o systemd.
1. Ativando o ambiente virtual manualmente
Para ativar um ambiente virtual manualmente em um terminal Linux, utilize o comando:
source /caminho/para/venv1/bin/activate
Esse comando ativa o ambiente venv1, preparando o terminal para executar scripts Python com os pacotes desse ambiente.
2. Criando um serviço systemd básico
Você pode criar um serviço do systemd que executa automaticamente um script Python usando o ambiente virtual. Para isso, crie um arquivo de unidade com o comando:
sudo nano /etc/systemd/system/nome-do-servico.service
Substitua nome-do-servico pelo nome desejado. Em seguida, adicione o seguinte conteúdo ao arquivo:
[Unit]
Description=Meu serviço venv1
[Service]
Type=simple
ExecStart=/caminho/para/venv1/bin/python /caminho/para/meu-script1.py
Restart=always
[Install]
WantedBy=multi-user.target
Este serviço executa o script meu-script1.py utilizando o Python dentro do ambiente virtual venv1. Para ativar o serviço:
sudo systemctl enable nome-do-servico
sudo systemctl start nome-do-servico
3. Criando um serviço que ativa o ambiente com source
Se precisar ativar o ambiente virtual com source, pode configurar o serviço da seguinte forma:
[Unit]
Description=Meu serviço com venv
[Service]
Type=simple
Environment="VIRTUAL_ENV=/caminho/para/venv"
ExecStart=/bin/bash -c "source $VIRTUAL_ENV/bin/activate && /caminho/para/meu-script.py"
User=usuario
Group=grupo
Restart=always
[Install]
WantedBy=multi-user.target
Explicação dos parâmetros
- Environment: define a variável de ambiente
VIRTUAL_ENV. - ExecStart: ativa o ambiente virtual e executa o script.
- User e Group: definem o usuário e grupo que executam o serviço (por segurança, evite usar root).
4. Habilitando e executando o serviço
Depois de salvar e fechar o arquivo de serviço, use os seguintes comandos:
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable nome-do-servico
sudo systemctl start nome-do-servico
5. Repetindo para múltiplos scripts
Você pode repetir o processo acima para diferentes ambientes virtuais e scripts, como por exemplo:
source /caminho/para/venv2/bin/activate
python /caminho/para/meu-script2.py
E criar um novo arquivo de serviço correspondente com caminhos e nomes ajustados.
Dicas adicionais
- Certifique-se de que os caminhos estão corretos e os scripts tenham permissão de execução.
- Use
journalctl -u nome-do-servicopara visualizar os logs do serviço e depurar problemas. - Para scripts com bibliotecas específicas, sempre utilize ambientes virtuais para evitar conflitos globais de dependência.
Com esses passos, você poderá criar serviços robustos para seus scripts Python no Linux, com ambientes virtuais ativados corretamente e reinício automático em caso de falha.

Comentários
Comente só assim vamos crescer juntos!