setup.py中的入口点

3 投票
1 回答
10023 浏览
提问于 2025-04-18 08:01

我正在用Python和Click做一个命令行工具。这是我的入口脚本:

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

我已经创建了一个包,并在__init__.py文件中添加了import noodle,这样就可以导入包含downloader()函数的noodle文件了——这个函数需要在entry_point脚本中执行。但是,当我安装setup.py后,在终端运行noodle --help时,出现了一个错误:ImportError: No module named noo.noodle

1 个回答

1

直接来自于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
    ''',
)

如果你的命令行应用有多个命令,我通常会像这样创建一个click组:

初始化文件: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

而且setup.py文件和click文档中的完全一样。

撰写回答