Question

Python's setuptool has two ways of adding command line scripts to a Python package: script and entry_point.

This tutorial outlines these ways:

scripts

Add a Python script (funniest-joke) to the package tree, and add its path to setup.py:

setup(
    ...
    scripts=['bin/funniest-joke'],
    ...
)

Entry point:

Add a Python script (funniest-joke) to the package tree. Add a main() function to it, and add command_line.py submodule which runs funniest's main():

command_line.py:

import funniest

def main():
    print funniest.joke()

setup.py

setup(
    ...
    entry_points = {
        'console_scripts': ['funniest-joke=funniest.command_line:main'],
    }
    ...
)

What are the advantages and disadvantages of each method?

Was it helpful?

Solution

Basically scripts is the old way which requires you to have a stand-alone, executable script file and the entry-points method lets you define which functions you want to run when a command is given. This way you can have several functions in the same file/module and then have 'entry points' which will be called when the user types in one of the console_scripts commands.

Although setup() supports a scripts keyword for pointing to pre-made scripts to install, the recommended approach to achieve cross-platform compatibility is to use console_scripts entry points (see below).

From https://packaging.python.org/tutorials/distributing-packages/#scripts (old source)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top