Gestire le dipendenze

Sviluppare pacchetti Python

James Fulton

Climate informatics researcher

Cosa sono le dipendenze?

  • Altri pacchetti che importi dentro il tuo package
  • Dentro mymodule.py:
# Questi pacchetti importati sono dipendenze
import numpy as np
import pandas as pd
...
Sviluppare pacchetti Python

Aggiungere dipendenze a setup.py

from setuptools import setup, find_packages

setup(
    ...
    install_requires=['pandas', 'scipy', 'matplotlib'],
)
Sviluppare pacchetti Python

Controllare la versione delle dipendenze

from setuptools import setup, find_packages

setup(
    ...
    install_requires=[

'pandas>=1.0',
'scipy==1.1',
'matplotlib>=2.2.1,<3'
], )
Sviluppare pacchetti Python

Controllare la versione delle dipendenze

from setuptools import setup, find_packages

setup(
    ...
    install_requires=[

'pandas>=1.0', # ok 'scipy==1.1', # non ok 'matplotlib>=2.2.1,<3' # ok ], )
  • Consenti il maggior numero possibile di versioni
  • Rimuovi le dipendenze inutilizzate
Sviluppare pacchetti Python

Versioni di Python

from setuptools import setup, find_packages

setup(
    ...
    python_requires='>=2.7, !=3.0.*, !=3.1.*',
)
Sviluppare pacchetti Python

Scegliere versioni di dipendenze e pacchetti

Un esempio delle note di rilascio di NumPy.

Sviluppare pacchetti Python

Creare un ambiente per sviluppatori

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
Sviluppare pacchetti Python

Creare un ambiente per sviluppatori

Salva i requisiti del package in un file

pip freeze > requirements.txt

Installa i requisiti dal file

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   <-- ambiente per sviluppatori
Sviluppare pacchetti Python

Esercitiamoci!

Sviluppare pacchetti Python

Preparing Video For Download...