Search code examples
pythoncommand-linepackaging

What's the best way to distribute python command-line tools?


My current setup.py script works okay, but it installs tvnamer.py (the tool) as tvnamer.py into site-packages or somewhere similar..

Can I make setup.py install tvnamer.py as tvnamer, and/or is there a better way of installing command-line applications?


Solution

  • Try the entry_points.console_scripts parameter in the setup() call. As described in the setuptools docs, this should do what I think you want.

    To reproduce here:

    from setuptools import setup
    
    setup(
        # other arguments here...
        entry_points = {
            'console_scripts': [
                'foo = package.module:func',
                'bar = othermodule:somefunc',
            ],
        }
    )