Gérer les dépendances

Créer des paquetages Python

James Fulton

Climate informatics researcher

Qu'est-ce qu'une dépendance ?

  • Autres progiciels que vous importez dans votre progiciel
  • Dans mymodule.py :
# Ces progiciels importés sont des dépendances
import numpy as np
import pandas as pd
...
Créer des paquetages Python

Ajouter des dépendances à setup.py

from setuptools import setup, find_packages

setup(
    ...
    install_requires=['pandas', 'scipy', 'matplotlib'],
)
Créer des paquetages Python

Contrôler la version des dépendances

from setuptools import setup, find_packages

setup(
    ...
    install_requires=[

'pandas>=1.0',
'scipy==1.1',
'matplotlib>=2.2.1,<3'
], )
Créer des paquetages Python

Contrôler la version des dépendances

from setuptools import setup, find_packages

setup(
    ...
    install_requires=[

'pandas>=1.0', # bon 'scipy==1.1', # mauvais 'matplotlib>=2.2.1,<3' # bon ], )
  • Autorisez le plus grand nombre de versions possible
  • Supprimez les dépendances inutilisées
Créer des paquetages Python

Versions de Python

from setuptools import setup, find_packages

setup(
    ...
    python_requires='>=2.7, !=3.0.*, !=3.1.*',
)
Créer des paquetages Python

Choisir les versions des dépendances et des progiciels

  • Consultez l'historique ou les notes de version du progiciel
  • Testez différentes versions

Un extrait des notes de version de NumPy.

Créer des paquetages Python

Créer un environnement pour les développeurs

pip freeze
alabaster==0.7.12
appdirs==1.4.4
argh==0.26.2
...
wrapt==1.11.2
yapf==0.29.0
zipp==3.1.0
Créer des paquetages Python

Créer un environnement pour les développeurs

Enregistrer les exigences du progiciel dans un fichier

pip freeze > requirements.txt

Installer les exigences à partir du fichier

pip install -r requirements.txt
mysklearn/
|-- mysklearn
|   |-- __init__.py
|   |-- preprocessing
|   |   |-- __init__.py
|   |   |-- normalize.py
|   |   |-- standardize.py
|   |-- regression
|   |   |-- __init__.py
|   |   |-- regression.py
|   |-- utils.py
|-- setup.py
|-- requirements.txt   <-- environnement de développement
Créer des paquetages Python

Passons à la pratique !

Créer des paquetages Python

Preparing Video For Download...