Anaconda, pip e poetry

Empaqueta, distribúe, xestiona, emprega e activa

  Conda vs pip/virtualenv

Característica(Ana)condapip/virtualenv
Ferramentas 1 varias
Resol. depend. automática manual
Repositorio conda-forge PyPi
Orientación data science xeral
Dependencias python, C, exes... python

Precisamos dúas ferramentas para facer a vida máis sinxela
Nunha ferramenta todo é máis simple

  conda: Comandos útiles

Anaconda: Unha suite para a ciencia de datos

⚠️ Ollo! Existen varias versións de conda!

  • anaconda: Ocupa varios Xigas, xa trae moitos paquetes.
  • miniconda: Ocupa pouco, debes instalar o que queiras.

🗂️ Baixar cheatsheet / chuleta de uso para conda

  Instalación

🪟 Microsoft Windows

🐧 GNU/Linux


                wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
                chmod a+rx Miniconda3-latest-Linux-x86_64.sh
                ./Miniconda3-latest-Linux-x86_64.sh
                

  Comandos básicos

Versión de conda


                    conda --version
                

Contornos dispoñibles


                        conda env list
                    

Crear un contorno novo


                        conda create -n bigdata python=3.12 numpy
                    

Borrar un contorno


                        conda env remove -n bigdata
                    

  Exercicio

Crea os seguintes contornos:

  • bigdata con pandas e Python 3.12
  • ia con numpy e Python 3.8

Solución


                        conda create -n bigdata python=3.12 pandas
                        conda create -n ia python=3.8 numpy
                    

  Seleccionar contorno

Activar


                    conda activate ENTORNO
                

Desactivar


                    conda deactivate
                

  Instalación (simple) de paquetes

Sintaxe

conda install PAQUETE

Exemplo

conda install matplotlib
  • Emprega o repositorio principal de anaconda.
  • Instala no contorno activado actual.

  Instalación de paquetes doutras organizacións/repositorios

Sintaxe xeral

conda install -c REPOSITORIO_ORGANIZACION PAQUETE

Exemplo (conda-forge é un repo comunitario)

conda install -c conda-forge jupyterlab

  Buscar paquetes

  Actualización de paquetes

Dende o contorno actual

conda update --all

Dende outro contorno

conda update -n ENVIRONMENT --all

  Automatizando os contornos

Exportar / Compartir o contorno
conda env export --file bigdata.yml

Importar/Crear contorno cun YAML

conda env create --file bigdata.yml

  Qué conten un arquivo de contorno?

cat bigdata.yml
channels:
                    - conda-forge
                    dependencies:
                    - python=3.6
                    - pip
                    - pip:
	                - pyjokes
                

  pip/venv: Comandos útiles

Se non está en conda, está en pip

⚠️ Ollo! Non é o mesmo pip que PyPI!

  • PyPI → The Python Package Index
  • PIPPackage Installer for Python

🗂️ Baixar cheatsheet / chuleta de uso para pip/venv

  Instalación de pipx/virtualenv en GNU/Linux


                sudo apt install python3-pip pipx
                pipx install virtualenv
                

Comproba que as rutas funcionen!


                type virtualenv
                type python3
                type pip3
                

Lembra establecer o locale! (gardao en .bash_profile)


                export LC_ALL="es_ES.UTF-8"
                virtualenv --version
                

  Contorno

Crear contorno


                virtualenv -p /opt/python-3.XX.XX/bin/python3 venv3_XX_XX
                

Activar contorno


                source venv/bin/activate 
                

Desactivar contorno


                deactivate
                

Borrar contorno


                rm -rf venv
                

  Convencións

Normalmente poderemos substituir


                python -m pip install ...
                

directamente por:


                pip install ...
                

  Instalación

A última versión do paquete


                python -m pip install PaqueteAInstalar
                

A versión específica: 1.2.3


                    python -m pip install PaqueteAInstalar==1.2.3
                

Como mínimo a versión: 2.3.4


                python -m pip install 'PaqueteAInstalar>=2.3.4'
                

Desinstalar paquetes


                python -m pip uninstall PaqueteADesinstalar
                

  Manexo de contornos

Listaxe de paquete/versión instalados no contorno:


                python -m pip freeze > contorno-bigdata.txt
                

Restaurar un contorno cos paquetes/versións


                python -m pip install -r contorno-bigdata.txt
                

Descarga de paquetes dunha listaxe (local)


                python -m pip download \
                    --destination-directory DIR -r contorno-bigdata.txt
                

Instalación de paquetes dunha listaxe (local)


                python -m pip install --no-index \
                    --find-links=DIR -r contorno-bigdata.txt
                

  Activar o bash completion


                python -m pip completion --bash >> ~/.profile
                

  Actualizar PIP


                python3 -m pip install --upgrade pip
                

Opción 1:


                pip3 install --upgrade setuptools
                

Opción 2:


                    python -m ensurepip --upgrade                    
                

Opción 3, baixa: https://bootstrap.pypa.io/get-pip.py


                python get-pip.py
                

  Conda e pip. Conviven!

  • Poden coexistir
  • Nun contorno conda podemos:
    • Ter instalado pip
    • Instalar para ese contorno os paquetes restantes con pip

                    conda install pip
                

  (Ana)conda vs Poetry

Característica(Ana)condaPoetry
Ferramentas 1 "1"
Resolución dependencias automática multilinguaxe automática python
Repositorio conda-forge, etc Python/PyPI
Dependencias exes, dependencias multilinguaxe: C, R... específicas python
Orientación data science xeral

  Poetry

  • Outro xestor de paquetes python que xurde en 2018
  • Permite crear e manexar contornos virtuais (con venv)
  • Instala os paquetes en paralelo
  • Está a ser adoptado pola comunidade
  • Emprégase para simplificar procesos de CD/CI con git actions
  • Resolve dependencias de xeito determinístico
  • Bloqueo de paquetes con poetry.lock sen pip-tools
  • Ten opcións como build e publish nativos para publicar en PyPi

  Instalación


                pipx install poetry
                

  Comandos básicos (1/2)

Instalar un paquete


                poetry add ipykernel pandas matplotlib
                


                poetry add --dev ipykernel
                

Instalar tódolos paquetes definidos no pyproject.toml


                poetry install
                

Borrar un paquete


                poetry remove pandas matplotlib
                

  Comandos básicos (2/2)

Listar contornos


                poetry env list
                

Listar contornos coa ruta onde están


                poetry env info --path
                

Crea o arquivo pyproject.toml


                poetry init
                

  GitHub, codespaces e poetry (1/3)

  • Fai un fork a jfsanchez/bigdata
  • Crea un novo codespace asociado a ese repositorio:
    ➕ → Codespace
  • Na consola de comandos de vscode do codespace executa:
    
                                pip install -U poetry
                                poetry add jupyter-book ipykernel ghp-import \
                                    pandas matplotlib
                             

  GitHub, codespaces e poetry (2/3)

  • Crea unha plantilla/proxecto e copia os cadernos Jupyter
    
                            poetry run jupyter-book create cadernillos/
                            cp notebooks/formatos/AVRO.ipynb cadernillos/
                        
  • Muda o arquivo _toc.yml para enlazar os cadernos:
    
                        format: jb-book
                            root: intro
                            chapters:
                                - file: AVRO.ipynb
                        

  GitHub, codespaces e poetry (3/3)

  • Procesa o notebook:
    
                        poetry run jupyter-book build cadernillos
                        
  • Actualiza o repositorio
    
                        git add -A
                        git commit -m "publish"
                        git push
                        
  • Move ao tag de publicación automáticamente:
    
                        poetry run ghp-import -n -p \
                            -f cadernillos/_build/html
                        

  Conda e poetry. Conviven!

            conda update -n base -c defaults conda
            conda create -n aberrante python=3.12
            conda activate aberrante
            conda install pip
            pipx install poetry
            poetry config virtualenvs.path $CONDA_ENV_PATH
            poetry config virtualenvs.create false
            

⚠️ Emprega poetry a partires deste punto para instalar paquetes novos e actualizalos, sobre todo os definidos no pyproject.toml.

  Manuais

QR materiales

Jose Sánchez

Errare humanum est, sed perseverare diabolicum
Se atopas erros, envíame un correo a: