I’ve read the documentation on egg entry points in Pylons and on the Peak pages, and I still don’t really understand. Could someone explain them to me?
Answer
An “entry point” is typically a function (or other callable function-like object) that a developer or user of your Python package might want to use, though a non-callable object can be supplied as an entry point as well (as correctly pointed out in the comments!).
The most popular kind of entry point is the console_scripts
entry point, which points to a function that you want made available as a command-line tool to whoever installs your package. This goes into your setup.py
script like:
entry_points={ 'console_scripts': [ 'cursive = cursive.tools.cmd:cursive_command', ], },
I have a package I’ve just deployed called cursive.tools
, and I wanted it to make available a “cursive” command that someone could run from the command line, like:
$ cursive --help usage: cursive ...
The way to do this is define a function, like maybe a cursive_command
function in the file cursive/tools/cmd.py
that looks like:
def cursive_command(): args = sys.argv[1:] if len(args) < 1: print "usage: ..."
and so forth; it should assume that it’s been called from the command line, parse the arguments that the user has provided, and … well, do whatever the command is designed to do.
Install the docutils
package for a great example of entry-point use: it will install something like a half-dozen useful commands for converting Python documentation to other formats.