1.2 Un semplice esempio

Solitamente, lo script di setup è piuttosto semplice, visto che è scritto direttamente in Python e non esistono limiti arbitrari all'impl ementazione di nuove funzionalità da fargli compiere; altresì si deve sempre fare attenzione nell'inserire operazioni arbitrare complesse nello script di setup. Gli script di configurazione in stile Autoconf possono eseguire lo script di setup più volte, durante il procedimento di compilazione ed installazione del proprio modulo da distribuire.

Se tutto quello che si vuole è distribuire un modulo chiamato foo, contenuto in un file foo.py, lo script di setup potrebbe essere tanto semplice quanto quello che segue:

from distutils.core import setup
setup(name='foo',
      version='1.0',
      py_modules=['foo'],
      )

Alcune osservazioni:

Per creare una distribuzione di sorgenti per questo modulo, si deve creare uno script di setup, setup.py, contenente il precedente codice, ed eseguire:

python setup.py sdist

che creerà un file archivio (per esempio un tarball in Unix, un file ZIP in Windows) contenente lo script di setup setup.py ed il proprio modulo foo.py. Il file archivio verrà chiamato foo-1.0.tar.gz (o .zip) e scompattato in una directory foo-1.0.

Se un utente finale desidera installare il modulo foo, le uniche cose che deve fare è scaricare foo-1.0.tar.gz (o .zip), scompattarlo, e nella directory foo-1.0--eseguire:

python setup.py install

che completa la copia di foo.py nella giusta directory per i moduli di terze parti nella propria installazione Python.

Questo semplice esempio dimostra alcuni fondamentali concetti delle Distutils. Primo, sia lo sviluppatore che l'installatore si trovano davanti alla stessa interfaccia, come ad esempio lo script di setup. La differenza è quale comando delle Distutils usano: il comando sdist viene eseguito per lo più dallo sviluppatore, mentre install è più spesso eseguito dall'installatore (comunque la maggior parte degli sviluppatori, vogliono occasionalmente installare il proprio codice).

Se si desidera rendere la vita realmente facile ai propri utenti, si possono preparare una o più distribuzioni precompilate. Solitamente, se si sta lavorando su di una macchina Windows e si vogliono facilitare le cose per gli altri utenti Windows, si possono creare degli installer eseguibili (il tipo più appropriato di distribuzione precompilata per questa piattaforma) con il comando bdistwininst. Per esempio:

python setup.py bdist_wininst

creerà un installatore eseguibile, foo-1.0.win32.exe, nella directory corrente.

Altri tipici formati per distribuzioni precompilate sono gli RPM, implementati con il comando bdist_rpm, Solaris pkgtool (bdist_pkgtool) e HP_UX swinstall (bdist_sdux). Per esempio, il seguente comando creerà un file RPM chiamato foo-1.0.noarch.rpm:

python setup.py bdist_rpm

(Il comando bdist_rpm usa l'eseguibile rpm, che comunque deve essere eseguito su di un sistema basato sugli RPM come RedHat Linux, SuSe Linux o Mandrake Linux).

È possibile sapere quali formati di distribuzione sono disponibili, in qualsiasi momento, digitando:

python setup.py bdist --help-formats

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.