[Python] Come scrivere uno script da installare in /usr/bin con setup.py?

Alessandro Dentella sandro a e-den.it
Lun 21 Mar 2011 12:55:35 CET


On Sun, Mar 20, 2011 at 09:44:14PM +0100, Marco Giusti wrote:
> On Sun, Mar 20, 2011 at 09:15:56PM +0100, Alessandro Dentella wrote:
> [...]
> > 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 ':'.
> 
> credo che sia un errore. leggi di seguito...

volendo effettivamente cambiare la configurazione di setup.py per usare
entry_points ho questo dubbio:

Nella attuale configurazione ho grossolaneamente:

   sqlkit/
   |-- bin
   |-- demo
   |   |-- layout
   |   `-- sql
   |       |-- images
   |       `-- model
   |-- sqlkit
   |   |-- misc
   |   `-- widgets
   |       |-- common
   |       |-- mask
   |       `-- table
   `-- test
       `-- doctest

la script da mettere in entry_points è in 'bin', e mi piace che stia lì per
visibilità. Così facendo però succede che se metto in setup.py:

      entry_points = {
	  'gui_scripts': [
	      'sqledit = bin.sqledit:main',
	  ]
      }

mi viene installato anche un *package* bin, cosa che chiaramente voglio
evitare. L'unica soluzione che vedo è di "nascondere"  sqledit all'interno
della struttura esistente 'sqlkit', cosa che non mi pare particolarmente
corretta, è normale avere le scripts o in bin o in scripts. 

Suggeriementi/commenti?


sandro
*:-)



Maggiori informazioni sulla lista Python