Skip to content

How to modify "setup.py"(entry_points) when I want to generate multiple command-line applications from sub-module and in a python package #3

@chxp

Description

@chxp

I want to write a small personal package based on your scripts.
The structure of the directory is showed here:
I further add a new module (src) and script (case.py) under bootstrap fold like this:

python-cmdline-bootstrap/
...
├── bootstrap
│   ├── __init__.py
│   ├── __main__.py
│   ├── bootstrap.py
│   ├── stuff.py
│   ├── src
│       ├── __init__.py
│       ├── case.py
├── bootstrap-runner.py
...

the content of case.py showed below:

# -*- coding: utf-8 -*-

import argparse


def case():
    print("This a new command.")

I add the following lines into the setup.py:

console_scripts = """
[console_scripts]
bootstrap = bootstrap.bootstrap:main
cccase = bootstrap.src.case:case
"""

When I execute python setup.py install and run cccase in the terminal after installation, it shows the error:

Traceback (most recent call last):
  File "/home/chxp/tmp/python3-test/bin/cccase", line 11, in <module>
    load_entry_point('cmdline-bootstrap==0.2.0', 'console_scripts', 'cccase')()
  File "/home/chxp/tmp/python3-test/lib/python3.8/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/chxp/tmp/python3-test/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2852, in load_entry_point
    return ep.load()
  File "/home/chxp/tmp/python3-test/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2443, in load
    return self.resolve()
  File "/home/chxp/tmp/python3-test/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2449, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
ModuleNotFoundError: No module named 'bootstrap.src'

It works fine if I use ./bootstrap-runner.py or python -m bootstrap (I modify them also), I think it may a mistake in the setup.py.
Thus, how do I revise the setup.py? I want to generate different command-line applications in a python package.

Meanwhile, how do I test multiple command-line applications by using ./bootstrap-runner.py or python -m bootstrap in a single run.
It seems I need to change the content in __main__.py or bootstrap-runner.py to test each command-line application, such as bootstrap, cccase.

The original scripts are upload at " https://gitee.com/chxp/python-cmdline-bootstrap " and download by git clone https://gitee.com/chxp/python-cmdline-bootstrap.git.

Thanks for your help. (I also asked it on Stackoverflow: https://stackoverflow.com/questions/66954048/how-to-write-the-accurate-setup-pyentry-points-when-i-want-to-generate-multi )

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions