Top Banner
Conda: un gestore di pacchetti software per Python (e non solo) Riccardo Vianello PyCon5 – Firenze, 23 maggio 2014
31

Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Jan 20, 2019

Download

Documents

phamnguyet
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Conda: un gestore di pacchetti software per Python (e non solo)

Riccardo Vianello

PyCon5 – Firenze, 23 maggio 2014

Page 2: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Packaging e distribuzione

Page 3: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

PyPA

● Python Packaging Authorityhttps://github.com/pypa

https://groups.google.com/forum/#!forum/pypa-dev

● virtualenv, pip, setuptools● PEP405 (venv in Python 3.3)● PEP453 (ensurepip in Python 3.4)

Page 4: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

● (NumPy), SciPy, Matplotlib, ...● VTK● Applicazioni GIS● Qt/PyQt

Page 5: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

● Python non è installato nel virtualenv

● Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie.. che gli strumenti che usiamo non gestiscono

Page 6: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Espedienti e workarounds

● ­­system­site­packages

● Modifiche a site.py

● Link simbolici in site­packages

● PYTHONPATH, LD_LIBRARY_PATH, ...

● Configurazione rapida e flessibile di ambienti di lavoro

● Riproducibilità

Page 7: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Cosa è Conda

● Creato per la distribuzione Python Anaconda● Cross platform (Linux, OSX, Windows)● Open Source (BSD)

Page 8: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Cosa è Conda

● Alternativa a pip / virtualenv / virtualenvwrapper● Simile a yum/apt, homebrew, chocolatey

Page 9: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

● Non richiede privilegi di amministratore● Pacchetti sono tarball + metadati● Facile ridistribuzione

Page 10: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

● Pacchetti binari● Hard/soft links quando possibile● Package cache locale

Page 11: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

● Python-Agnostic (o quasi)● Può gestire tanto bene il software Python

quanto le librerie da cui dipende

Page 12: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Installazione e utilizzo base

Page 13: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Come procurarsi Conda

● Anaconda

http://continuum.io/downloads

(distribuzione completa, 125+ pkgs, ~350 MB)

● Miniconda

http://conda.pydata.org/miniconda.html

(minimale, conda + interprete, ~20 MB)

Page 14: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

*conda/ ├── pkgs ├── conda­meta ├── envs ├── [...] ├── bin ├── lib └── include

Cache dei pacchetti

Metadati

Environments

“Root” environment

Page 15: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

$ conda create ­n myenv ipython

$ conda create ­n myenv numpy=1.7

$ conda create ­n myenv ­f reqs.txt

$ conda create ­p ~ric/myenv ipython

Creazione di un environment

Page 16: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

$ source activate myenv

$ source activate /home/ric/myenv

(myenv) $ conda install numpy

(myenv) $ conda update ipython

(myenv) $ source deactivate

Gestione di un environment

Page 17: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

 $ conda info ­e

 $ conda list $ conda list ­e > reqs.txt

 $ conda search 

Page 18: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Rimozione di pacchetti e environments

$ conda remove ­n myenv numpy

$ conda remove ­n myenv ­­all

(Ma ok anche rimuovere semplicemente la directory)

Page 19: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Casi d'uso

Page 20: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Conda per lavoro e sviluppo

● Configurazione rapida e riproducibile di ambienti di sviluppo anche complessi

● Gestione estesa a librerie e altre componenti “non-python”

Page 21: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Conda nel testing

● Rapidità● Riproducibilità

Installare e configurare anche Postgresql in un ambiente di test è questione di secondi

Conda + Travis CIhttp://conda.pydata.org/docs/travis.html

Page 22: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Conda nel deployment

"Solid Python Application Deployments For Everybody"

(H Schlawack, PyCon/EuroPython 2013)

● Riproducibilità● Atomicità● Rollback● Efficienza

Page 23: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Conda nel deployment

La compilazione sull'host può essere difficoltosa o impossibile

● Installazione di pacchetti nativi (rpm, deb, ..)● Soluzioni ibride (dh-virtualenv)

L'uso di pip/virtualenv quindi poco pratico o insufficiente

Page 24: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Conda nel deployment

POC: Deployment su OpenShift

● Installazione e configurazione via git, conda e pip

● Configurazione sostanzialmente indipendente da quanto reso disponibile dal provider

● Maggiore flessibilità rispetto alle cartridges

https://github.com/rvianello/openshift-anaconda-quickstart

Page 25: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Conda Recipes

Page 26: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Se un pacchetto per conda non fosse disponibile?

● Si usa pip● Si installa dai sorgenti● Si scrive una “recipe” e si crea il pacchetto

http://conda.pydata.org/docs/build.html

Page 27: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Struttura di una recipe

mypackage/

 ├── meta.yaml

 ├── bld.bat

 ├── build.sh

 ├── patch.diff

 └── run_test.py

$ conda build </path/to/mypackage>

pip/setup.py,cmake,make,...

Page 28: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Produrre pacchetti per conda

In alcuni casi:

$ conda skeleton pypi mypackage

$ conda pipbuild <name on pypi>

$ conda convert <pkg­file>

Page 29: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Links

● Project web site

http://conda.pydata.org/● GitHub repos:

https://github.com/conda● Mailing list

https://groups.google.com/a/continuum.io/forum/?fromgroups#!forum/anaconda

Links

Page 30: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Ringraziamenti

● Continuum Analytics ● Associazione Python Italia● Voi qui presenti

Page 31: Conda: un gestore di pacchetti software per Python (e non ... · Python non è installato nel virtualenv Usiamo Python (anche) perchè ci rende accessibili una quantità di librerie..

Domande?