Formulário de contato

Nome

E-mail *

Mensagem *

Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!

Como Gerenciar Múltiplos Ambientes Virtuais Python em Services no Ubuntu

Como Gerenciar Múltiplos Ambientes Virtuais Python em Services no Ubuntu

Gerenciar múltiplos ambientes virtuais Python (venv) em sistemas Ubuntu pode ser uma excelente prática para isolar dependências e manter projetos organizados, especialmente ao usar serviços systemd para iniciar aplicações automaticamente. A seguir, veja como criar, ativar e configurar vários ambientes virtuais Python integrados a serviços do Ubuntu.

Criando e ativando um ambiente virtual Python

Para criar um ambiente virtual, use o comando abaixo, substituindo nome_do_ambiente pelo nome desejado:

python3 -m venv nome_do_ambiente

Ative o ambiente virtual:

source nome_do_ambiente/bin/activate

Dentro de cada ambiente virtual, será necessário instalar os módulos necessários para o projeto, usando:

pip install pacote_desejado

Instalando módulos dinamicamente no código Python

Uma abordagem para garantir que dependências estejam instaladas é usar um bloco try-except que instala o módulo caso ele não esteja presente:

import pip

try:
    import psutil
except ImportError:
    pip.main(['install', '--user', 'psutil'])
    import psutil

Desativando o ambiente virtual

Para sair do ambiente virtual, basta executar:

deactivate

Configurando múltiplos services systemd para ambientes virtuais

Você pode criar serviços systemd para iniciar automaticamente seus projetos Python isolados em diferentes ambientes virtuais. Exemplo para dois serviços:

sudo nano /etc/systemd/system/venv1.service
sudo nano /etc/systemd/system/venv2.service

Exemplo de arquivo venv1.service

[Unit]
Description=Venv1 Service

[Service]
User=<usuário>
WorkingDirectory=<caminho_para_diretório_do_projeto_venv1>
ExecStart=<caminho_para_o_virtualenv>/bin/python <caminho_para_arquivo_principal_venv1>

[Install]
WantedBy=multi-user.target

Exemplo de arquivo venv2.service

[Unit]
Description=Venv2 Service

[Service]
User=<usuário>
WorkingDirectory=<caminho_para_diretório_do_projeto_venv2>
ExecStart=<caminho_para_o_virtualenv>/bin/python <caminho_para_arquivo_principal_venv2>

[Install]
WantedBy=multi-user.target

Ativando o serviço para iniciar automaticamente

Para verificar quais serviços estão configurados para iniciar automaticamente:

systemctl list-unit-files --type=service

Para habilitar o seu serviço:

sudo systemctl enable seuservice.service

Considerações finais

Utilizar múltiplos ambientes virtuais isolados, junto com serviços systemd, facilita a administração de diferentes projetos Python em um mesmo servidor Ubuntu, garantindo que cada projeto mantenha suas dependências específicas sem conflito. Lembre-se de ajustar os caminhos de acordo com sua estrutura e permissões de usuário.

Para mais informações sobre venv do Python e systemd services, consulte a documentação oficial.

Comentários