On Sat, Mar 19, 2011 at 05:43:31PM +0100, Marco Giusti wrote: > 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', > ] > } > )
nel link della documentazione in [2] l'esempio è: setup( # other arguments here... entry_points = { 'console_scripts': [ 'foo = my_package.some_module:main_func', 'bar = other_module:some_func', ], 'gui_scripts': [ 'baz = my_package_gui.start_func', ] } ) dove c'è una differenza che non capisco se è voluta o meno. Nelle console_scripts usa :main_func, mentre in gui_scripts usa .start_func (ovvero con . invece che :). A me funziona solo se metto ':'. Inoltre non mi è chiaro se è voluto od accidentale che metta la start_func esattamente nel package mentre suggerisce per la console_script che sia in un modulo... sandro *:-) -- Sandro Dentella *:-) http://www.reteisi.org Soluzioni libere per le scuole http://sqlkit.argolinux.org SQLkit home page - PyGTK/python/sqlalchemy _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python