Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Entry Points in setup.py

I am making a CLI in python using Click. This is my entry point script:

entry_points='''
    [console_scripts]
    noo=noo.noodle:downloader
''',

I have made a Package, I have added import noodle in the __init__.py file so that it could import the file noodle which contains the function downloader() - which needs to be executed by the entry_point script. But when I install the setup.py, I get an Error: ImportError: No module named noo.noodle when I run noodle --help in terminal?

like image 533
Delete Me Avatar asked Feb 02 '26 04:02

Delete Me


1 Answers

Directly from the documentation on click.pocoo.org:

yourscript.py:

import click

@click.command()
def cli():
    """Example script."""
    click.echo('Hello World!')

setup.py:

from setuptools import setup

setup(
    name='yourscript',
    version='0.1',
    py_modules=['yourscript'],
    install_requires=[
        'Click',
    ],
    entry_points='''
        [console_scripts]
        yourscript=yourscript:cli
    ''',
)

While if you have multiple commands in your CLI application, I usually create a click group like this:

init.py:

import click

@click.group()
@click.option('--debug/--no-debug', default=False, help='My test option.')
def cli(debug):
    """Add some initialisation code to log accordingly for debugging purposes or no"""
    pass  

@cli.command()
def configure():
    """Configure the application"""
    pass

And the setup.py file looks exactly the same as the one in the click documentation.

like image 143
cgiacomi Avatar answered Feb 04 '26 17:02

cgiacomi



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!