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

Rispondere a