1. Python

1.1. Introdução

O desenvolvimento em Python frequentemente requer a instalação de dependências e pacotes adicionais. Devido a potenciais conflitos de versão e incompatibilidades entre dependências, a instalação global de todos os pacotes no sistema operacional não é recomendada. A prática ideal consiste na criação de ambientes virtuais isolados, utilizando gerenciadores de pacotes como venv ou conda. Essa abordagem permite a instalação de pacotes específicos para cada projeto, evitando conflitos e garantindo a portabilidade e reprodutibilidade do ambiente de desenvolvimento.

1.2. Ambiente Virtuais

Todos os comandos aqui exemplificados podem ser executados dentro de um container.

Nota

Tanto o venv quanto o conda podem ser instalados e utilizados dentro de containers, permitindo a criação de ambientes Python isolados e portáveis. Para otimizar o tamanho da imagem e garantir a compatibilidade, a imagem base docker://python:alpine é uma escolha eficiente. Essa imagem, baseada em Alpine Linux, oferece um ambiente mínimo com o Python pré-instalado, ideal para a instalação de gerenciadores de pacotes e a criação de ambientes virtuais específicos para cada projeto.

1.2.1. Python venv

Neste item será descrito como criar, atualizar, instalar pacotes e desativar o ambiente virtual.

1.2.1.1. Criando um ambiente virtual

Como exemplo, será criado um ambiente virtual para um projeto e será chamado projeto1. Depois de criado, basta carregar o ambiente com o comando source e atualizando o programa pip.

[user1@sismom-1 ~]$ python -m venv .venv/projeto1
[user1@sismom-1 ~]$ source .venv/projeto1/bin/activate
(projeto1) [user1@sismom-1 ~]$ pip list
Package Version
------- -------
pip     24.0

(projeto1) [user1@sismom-1 ~]$ pip install --upgrade pip
Requirement already satisfied: pip in ./.venv/projeto1/lib/python3.12/site-packages (24.0)
Collecting pip
Downloading pip-25.3-py3-none-any.whl.metadata (4.7 kB)
Downloading pip-25.3-py3-none-any.whl (1.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 31.7 MB/s eta 0:00:00
Installing collected packages: pip
Attempting uninstall: pip
    Found existing installation: pip 24.0
    Uninstalling pip-24.0:
    Successfully uninstalled pip-24.0
Successfully installed pip-25.3
(projeto1) [user1@sismom-1 ~]$

Nota

Note que quanto o ambiente virtual é ativado o prompt muda e passa a incluir o nome do ambiente (projeto1) [user1@sismom-1 ~]$.

1.2.1.2. Instalando pacotes

Para instalar os pacotes em Python, utilize o comando pip install <pacote>. A seguir é mostrado como instalar o pacote numpy no ambiente projeto1.

(projeto1) [user1@sismom-1 ~]$ pip install numpy
Collecting numpy
  Downloading numpy-2.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (62 kB)
Downloading numpy-2.3.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (16.6 MB)
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.6/16.6 MB 41.6 MB/s  0:00:00
Installing collected packages: numpy
  Successfully installed numpy-2.3.5
(projeto1) [user1@sismom-1 ~]$

1.2.1.3. Desativando o ambiente virtual

Para desativar o ambiente basta digitar o comando deactivate.

(projeto1) [user1@sismom-1 ~]$ deactivate
[user1@sismom-1 ~]$

1.2.2. Conda

O Conda, um poderoso gerenciador de pacotes e ambientes, é distribuído em duas versões principais: Anaconda e Miniconda. Anaconda é uma distribuição abrangente, amplamente utilizada em ciência de dados e aprendizado de máquina, que inclui mais de 300 pacotes pré-instalados. No entanto, para projetos que exigem controle granular sobre as dependências e um ambiente mais enxuto, o Miniconda é a opção recomendada. Sua instalação é mais rápida e permite a instalação seletiva de pacotes, otimizando o espaço em disco e garantindo que apenas as bibliotecas essenciais para a aplicação sejam incluídas.

Nota

A principio não é necessário instalar o miniconda na sua conta, pois o mesmo já está instalado e pode ser acessado através do comando module load. Pode-se listar todos os módulos instalados com o comando module avail ou procurar um módulo com o comando module spider.

[user1@sismom-1 ~]# module spider conda
----------------------------------------------------------------------------
   miniconda3: miniconda3/py313_25.9.1
----------------------------------------------------------------------------
This module can be loaded directly: module load miniconda3/py313_25.9.1

Help:
  Sets up the paths you need to use miniconda python.

[user1@sismom-1 ~]# module load miniconda3
[user1@sismom-1 ~]# module list

Currently Loaded Modules:
  1) miniconda3/py313_25.9.1

[user1@sismom-1 ~]#

1.2.2.1. Criando um ambiente virtual

[user1@sismom-1 ~]$ conda create --name projeto1
Channels:
- defaults
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/user1/.conda/envs/projeto1
Proceed ([y]/n)?

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate projeto1
#
# To deactivate an active environment, use
#
#     $ conda deactivate
[user1@sismom-1 ~]#

Atenção

Ao tentar ativar um ambiente Conda recém-criado, é possível que ocorra um erro caso o comando conda init não tenha sido executado previamente. Esse comando é fundamental para inicializar o Conda no shell em uso, configurando as variáveis de ambiente e os scripts necessários para o correto funcionamento do gerenciador de ambientes. A ausência dessa inicialização impede que o Conda localize e ative o ambiente desejado, resultando em um erro.

[user1@sismom-1 ~]$ conda activate projeto1
CondaError: Run 'conda init' before 'conda activate'

[user1@sismom-1 ~]$ conda init
modified      /home/user1/.bashrc

==> For changes to take effect, close and re-open your current shell. <==

[user1@sismom-1 ~]#

O conda init alterou o arquivo .bashrc. Logo, é necessário recarrega-lo abrindo um novo shell ou executando o comando source ~/.bashrc.

Nota

Esse comando só é necessário executar apenas uma vez, logo após a execução do conda init.

Após recarregar ou abrir um novo shell.

(base) [user1@sismom-1 ~]$ conda activate projeto1
(projeto1) [user1@sismom-1 ~]$

Nota

Quando o ambiente virtual é ativado o prompt muda e passa a incluir o nome do ambiente (projeto1) [user1@sismom-1 ~]$.

1.2.2.2. Instalando pacotes

Para instalar os pacotes em Python utilize um dos comandos.

  • conda install <pacote>

  • pip install <pacote>

1.2.2.3. Desativando o ambiente virtual

Para desativar o(s) ambiente(s) basta digitar o comando conda deactivate.

(projeto1) [user1@sismom-1 ~]$ conda deactivate
(base) [user1@sismom-1 ~]$ conda deactivate
[user1@sismom-1 ~]$