On Sat, Mar 19, 2011 at 12:10:10PM +0100, lex mlist wrote: > Giorno a tutti, > > quello che vorrei ottenere è uno script da eseguire per automatizzare alcuni > processi. > Non è conveniente spostare sempre lo script perchè potrebbe essere > utilizzato in qualsiasi directory, e quindi diverrebbe scomodo. > Non vorrei dover far settare a mano la variabile d'ambiente in cui ricercare > lo script. > > Pensavo quindi di affidarmi al setup.py e all'argomento 'scripts' della > funzione setup.
setup.py, ovvero distutils/setuptools/distribute (c'è un po' di confusione dietro) ti permette di installare i tuoi script in determinate cartelle "speciali", ovvero che sono presenti in $PATH, questo in unix, in windows credo che sia %PATH ma non so' di sicuro. lo script che vai ad installare deve essere uno script che deve essere eseguibile o, se non ricordo male, una chiamata ad una funzione. qui[1] puoi vedere un esempio su come creare uno script eseguibile, mentre qui[2] puoi vedere come settare setuptools/distribute affiché ti creino uno script che sia eseguibile e che sia installato nella giusta directory. [1] http://www.artima.com/weblogs/viewpost.jsp?thread=4829 [2] http://peak.telecommunity.com/DevCenter/setuptools#automatic-script-creation [...] > Ho provato a dare una occhiata al file generato e ho modificato execfile > con exec. Ma poi mi viene a dare un errore tipo: bhé, non puoi pensare di cambiare una chiamata a funzione e pensare che il programmi funzioni ancora solo perché il nome si assomiglia. tu in realtà non hai bisogno di simulare il comportamento di setuptools/ecompagni quando in realtà ci penseranno loro a fare tutto il lavoro per te, in setup.py: setup( name='...', # ... entry_points = { 'console_scripts': [ 'nome_dell_eseguibile': 'package.some_module:main_func', ] } ) dopodiché con il comando _install_ o _develop_ avrai un eseguibile che sarà invocabile da shell semplicemente chiamandolo: $ nome_dell_eseguibile [args...] > Traceback (most recent call last): > File "/Users/lexor/Desktop/test/bin/testdev.py", line 7, in <module> > exec(__file__) > File "<string>", line 1 > /Users/lexor/Desktop/test/test/scripts/testdev.py > ^ > SyntaxError: invalid syntax questo semplicemente perché tu dici a python di interpretare '/Users/...' come un comando, come dire: >>> /Users/lexor/Desktop/test/test/scripts/testdev.py File "<stdin>", line 1 /Users/lexor/Desktop/test/test/scripts/testdev.py ^ SyntaxError: invalid syntax >>> > Avete qualche guida che spiega come creare uno di questi script? Ho guardato > la doc di distutils ma non spiega come crearli, solo come installarli... > Meglio se per py3, ma mi accontento anche di una versione vecchissima purchè > sia applicabile :s leggiti il post del sign. van Rossum e poi la documentazione di setuptools o di distribute, meglio, sopratutto il paragrafo che ti ho indicato. -- Dalle virtù che si esigono in un domestico, l'Eccellenza Vostra conosce molti padroni degni d'esser servitori? -- Pierre Augustin Caron de Beaumarchais _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python