[Distutils] How to use buildout with a scripts directory?

Jim Fulton jim at zope.com
Wed Feb 11 15:49:05 CET 2009


buildout only supports scripts defined as entry points.  I'm skeptical  
that it can support non-entry-point scripts, as it wouldn't, without  
some serious hackery, be able to control the paths used by the scripts.

Jim

On Feb 11, 2009, at 3:33 AM, Jon Wright wrote:

> Dear distutils-sig,
>
> [Apologies if this is a newbie question]
>
> I am trying to use buildout and am having trouble to figure out how to
> get it to install the scripts that come with a package. They are
> present inside the egg which is installed by buildout, but they don't
> end up in the bin directory. After running buildout my bin directory
> is empty, but I can find:
>
> .\eggs\imaged11-1.2.3-py2.5-win32.egg\EGG-INFO\scripts\peaksearch.py
>
> In the package I have a directory (ImageD11) with the library stuff in
> it and a directory named "scripts" with the scripts. When I use
> distutils or setuptools it does what I expected:
>
> setup.py:
> ...
> setup(name='ImageD11',
>      ...,
>      packages = ["ImageD11"],
>      package_dir = {"ImageD11":"ImageD11"},
>     scripts = [ "scripts/peaksearch.py",
>                    "scripts/bgmaker.py",
>                    ...]
>     )
>
> c:\testImageD11distutils\> python setup.py install
> ...
> Installing peaksearch.py script to c:\python25\Scripts
> Installing bgmaker.py script to c:\python25\Scripts
>
> Now I am wondering how to persuade "buildout" to do the same thing,
> but place those scripts into it's own little area.
>
> In buildout.cfg I have:
> ==================
> [buildout]
> parts = ImageD11
>
> [ImageD11]
> recipe = zc.recipe.egg:scripts
> scripts = scripts/peaksearch.py
> eggs = ImageD11
> version = 1.2.3
>
> It seems to acknowledge that scripts/peaksearch.py is requested, but
> doesn't seem to do anything about it. My scripts mostly just map
> command line arguments to function calls, something like this:
>
> if __name__=="__main__":
>    import ImageD11.something, sys
>    ImageD11.something.do_thing( sys.argv[1], sys.argv[2] )
>
> I've read the documentation at http://pypi.python.org/pypi/zc.buildout
> several times but I still can't figure out how to make these scripts
> part of the build. There seems to be a lot of talk about entry_points,
> but I'm blocked on those:
> * what is the entry point for an if __name__=="__main__": idiom?
> * as these things were in ./scripts/, they aren't in the module, so  
> how to I reference them anyway?
>
> Thanks in advance for any help!
>
> Jon
>
> _______________________________________________
> Distutils-SIG maillist  -  Distutils-SIG at python.org
> http://mail.python.org/mailman/listinfo/distutils-sig

--
Jim Fulton
Zope Corporation




More information about the Distutils-SIG mailing list