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

Sugestões de pesquisas

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

#python; #virtualenv; #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.

Postar um comentário

Comente só assim vamos crescer juntos!
CanalQb mais próximo Quer falar com o CanalQb?
Em que posso te ajudar?
Fale comigo