2012-12-30 12 views
6

Ich habe einen benutzerdefinierten Paster-Befehl erstellt, wie in http://pythonpaste.org/script/developer.html#what-do-commands-look-like beschrieben. In meinem setup.py habe ich den Eintrittspunkt wie folgt definiert:Der globale Paster-Befehl wurde in virtualenv nicht gefunden

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

Ich bin innerhalb einer aktivierten virtualenv und habe mein Paket installiert über

python setup.py develop 

Wenn ich paster während in meinem Paket Ordner ausführen , Ich sehe meinen benutzerdefinierten Befehl und ich kann es über paster xxx ... ausführen. Aber wenn ich meinen Paketordner paster lasse, zeigt mein Befehl nicht mehr an. Ich habe which paster überprüft und es ist die Version meines virtualenv. Ich habe auch einen Python-Interpreter gestartet und xxxconf importiert und es funktioniert gut.

Ich habe keine Ahnung, warum mein globaler Befehl nicht erkannt wird, wenn ich außerhalb meines Paketordners bin !?

Antwort

6

Sie tun etwas falsch, es sollte funktionieren. Dies ist die minimale Arbeitsbeispiel, können Sie es mit Ihrem virtualenv testen:

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: leer.

Jetzt testen:

$ 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

Sie sollten Ihre paster_script im aktiven virtualenv installieren. Dann können Sie es überall verwenden.