Lo script di setup è il centro di tutte le attività di compilazione, distribuzione ed installazione di moduli utilizzato da Distutils. Il principale scopo dello script di setup è descrivere il proprio modulo di distribuzione a Distutils, in modo che i diversi comandi che debbano operare sul modulo siano in grado di fare cosa giusta. Come abbiamo visto nella sezione 1.2 sopra, lo script di setup consiste principalmente nella chiamata di setup() e molte delle informazioni fornite a Distutils dallo sviluppatore del modulo vengono indicate attraverso gli argomenti chiave di setup().
Di seguito un esempio un po' più complesso, che ci seguirà nella prossima parte della sezione: il proprio script di setup con le Distutils. (Da ricordare che le Distutils sono state incluse dalla versione 1.6 di Python, mentre nella versione 1.5.2 hanno un'esistenza indipendente, cosicché gli utenti possano utilizzarle per installare altre distribuzioni di moduli. Lo script di setup di Distutils, mostrato qui, viene utilizzato per installare il package in Python 1.5.2.):
#!/usr/bin/env python from distutils.core import setup setup(name='Distutils', version='1.0', description='Python Distribution Utilities', author='Greg Ward', author_email='gward@python.net', url='http://www.python.org/sigs/distutils-sig/', packages=['distutils', 'distutils.command'], )
Ci sono solo due differenza tra questo e la normale distribuzione di un singolo file presentata nella sezione 1.2: più metadata e la specifica di moduli Python puri per package, più che per modulo. Questo è importante in quanto Distutils è composto da un paio di dozzine di moduli suddivisi in due package; un'esplicita lista di ogni modulo sarebbe noiosa da generare e difficile da manutenere. Per maggiori informazioni sui metadata addizionali, vedete la sezione 2.6.
Si noti che ogni percorso con nome (file o directory) indicato nello script di setup dovrà essere scritto utilizzando la convenzione Unix, ovvero separato da barre oblique. Le Distutils si prenderanno carico di convertire questa rappresentazione neutrale rispetto alla piattaforma in qualcosa che sia appropriato sulla piattaforma corrente, prima di utilizzare il percorso con nome. Questo assicura che lo script di setup sia portabile nei vari sistemi operativi e questo, per inciso, è uno dei punti di forza delle Distutils. In questo spirito, tutti i percorsi con nome di questo documento vengono separati da barre oblique. (I programmatori di Mac OS devono ricordare che l'assenza di un barra obliqua indica un percorso relativo, quando invece le convenzioni di Mac OS prevederebbero i due punti.)
Questo, solitamente, si applica solo ai percorsi con nome indicati alle funzioni di Distutils. Se, per esempio, si usano le funzioni standard di Python come glob.glob() o os.listdir() per specificare file, si dovrà fare attenzione a scrivere codice portabile invece di fare un uso pesante dei separatori di percorso.
glob.glob(os.path.join('mydir', 'subdir', '*.html')) os.listdir(os.path.join('mydir', 'subdir'))