[Distutils] Can't generate console script with buildout - even when using zc.recipe.egg

mustapha mustapha at headnet.dk
Fri Apr 25 11:06:39 CEST 2008


Hi Jim,

I wrote a little patch to add support for old style scripts.
I don't know if it is a good solution (maybe I missed something)

Can you please review it and help me to get it done if I misunderstood.

Many thanks,
/Mustapha


Jim Fulton wrote:
> On Apr 1, 2008, at 11:07 AM, Anton Stonor wrote:
>> Hi there,
>>
>> I was hoping a buildout guru could give a hand on this one:
>>
>> The "RelStorage" package comes as an egg and installing it in a  
>> buildout
>> environment works fine.
>>
>> However I can't find a way to let buildout generate the zodbconvert
>> console script that comes with RelStorage.
>>
>> easy_install RelStorage adds the script fine.
>>
>> I know you should use zc.recipe.egg in this case, but no result.
>>
>> The RelStorage setup.py comes with this:
>>
>> scripts=['scripts/zodbconvert.py']
>>
>> but no "console_scripts" entry points (maybe that is needed?)
> 
> Yes, buildout needs that.  buildout only installs scripts declared as  
> entry points.  As you discovered, you can specify the entry points  
> yourself. Buildout also needs the entry point to be importable from  
> the egg.  Unfortunately, old-style distutils script handling doesn't  
> put the scripts in a place where they are importable.
> 
> 
>>
>> I found a kind-of workaround:
>>
>> entry-points = zodbconvert=zodbconvert:main
>> extra-paths =
>> /home/stonor/projects/mybuildout/eggs/RelStorage-1.0.1-py2.4.egg/EGG- 
>> INFO/scripts
>>
>> But it is annoying to hard code the path to
>> RelStorage-1.0.1-py2.4.egg/EGG-INFO/scripts.
>>
>> Is there a way to dynamically look up the path to an egg with bulidout
>> or a another way to solve my issue?
> 
> No, because the scripts aren't included in the RelStorage Python  
> package and aren't in the egg path.  You should get Shane to move this  
> script into a module that can be imported from the egg. This is what I  
> did with the ZODB scripts a while back.
> 
> Perhaps buildout should support the traditional script-installation  
> mechanism, but that mechanism assumes that the modules needed by the  
> script are installed into site packages and that's not a model that  
> buildout provides.  Virtualenv supports this use case because it  
> emulates a Python install.
> 
> Jim
> 
> --
> Jim Fulton
> Zope Corporation
> 
> 
> _______________________________________________
> Distutils-SIG maillist  -  Distutils-SIG at python.org
> http://mail.python.org/mailman/listinfo/distutils-sig
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch.diff
Type: text/x-diff
Size: 2403 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20080425/000091ea/attachment-0002.diff>


More information about the Distutils-SIG mailing list