2012-12-30 11 views
6

Ho creato un comando paster personalizzato come descritto in http://pythonpaste.org/script/developer.html#what-do-commands-look-like. Nel mio setup.py ho definito il punto di ingresso in questo modo:Comando paster globale non trovato in virtualenv

entry_points={ 
    'paste.global_paster_command' : [ 
    'xxx_new = xxxconf.main:NewXxx' 
    ] 
} 

Sono all'interno di un virtualenv attivato e ho installato il mio pacchetto tramite

python setup.py develop 

Se corro paster mentre dentro la mia cartella del pacchetto , Vedo il mio comando personalizzato e posso eseguirlo tramite paster xxx .... Ma se lascio la mia cartella dei pacchetti, paster non mostra più il mio comando. Ho controllato which paster ed è la versione del mio virtualenv. Ho anche iniziato un interprete Python e importato xxxconf e funziona perfettamente.

Non ho idea del motivo per cui il mio comando globale non viene riconosciuto quando sono fuori dalla cartella del pacchetto !?

risposta

6

Stai facendo qualcosa di sbagliato, dovrebbe funzionare. Questo è l'esempio di lavoro minimo, è possibile verificare con il vostro virtualenv:

blah/setup.py:

from setuptools import setup, find_packages 

setup(name='blah', 
     version='0.1', 
     packages=find_packages(exclude=['ez_setup', 'examples', 'tests']), 
     include_package_data=True, 
     zip_safe=False, 
     entry_points={'paste.global_paster_command': [ "xxx_new = blah.xxx:NewXxx", ] }, 
    ) 

blah/blah/xxx.py:

from paste.script import command 

class NewXxx(command.Command): 
    usage = "PREFIX" 
    summary = "some command" 
    group_name = "my group" 

blah/blah/__init__.py: vuota.

ora testando:

$ pwd 
/tmp 
$ virtualenv paster 
New python executable in paster/bin/python 
Installing setuptools............done. 
Installing pip...............done. 
$ . paster/bin/activate 
(paster)$ pip install PasteScript 
Downloading/unpacking PasteScript 
[... skipping long pip output here ...] 
(paster)$ paster 
[...] 
Commands: 
    create  Create the file layout for a Python distribution 
    help   Display help 
    make-config Install a package and create a fresh config file/directory 
    points  Show information about entry points 
    post   Run a request for the described application 
    request  Run a request for the described application 
    serve  Serve the described application 
    setup-app Setup an application, given a config file 

(paster)$ cd blah/ 
(paster)$ python setup.py develop 
running develop 
[... skipping setup.py output...] 
(paster)$ paster 
[...] 
Commands: 
    create  Create the file layout for a Python distribution 
    help   Display help 
    make-config Install a package and create a fresh config file/directory 
    points  Show information about entry points 
    post   Run a request for the described application 
    request  Run a request for the described application 
    serve  Serve the described application 
    setup-app Setup an application, given a config file 

my group: 
    xxx_new  some command 
(paster)$ cd ~ 
(paster)$ paster 
[...] 
Commands: 
[...] 
    setup-app Setup an application, given a config file 

my group: 
    xxx_new  some command 
0

È necessario installare il paster_script nel virtualenv attiva. Quindi puoi usarlo ovunque.