Python Setuptools CLI здание - PullRequest
       35

Python Setuptools CLI здание

0 голосов
/ 11 апреля 2019

У меня небольшая проблема с правильной сборкой и установкой моего компьютера с setuptools.

Структура моего проекта выглядит следующим образом:

foobar/

    cli/

        src/
            main
            __init__.py

        config.json
        __init__.py

    setup.py
    requirements.txt
    venv.sh
    README.md
    .gitignore 
    __init__.py

Мой setup.py выглядит так:

from setuptools import setup, find_packages

# Package meta-data.
__version__ = '0.0.1'

# What packages are required for this module to be executed?
REQUIRED = ['requests', 'argparse']

# Where the magic happens:
setup(
    name='foobar',
    version=__version__,
    description='foo bar',
    long_description="https://github.com/foo/bar",
    long_description_content_type='text/markdown',
    author='foo bar',
    author_email='foo@bar.com',
    packages = find_packages(),
    url='https://github.com/foo/bar',
    entry_points={'console_scripts': ['foobar=cli.src.main:main']},
    python_requires='>=3.6.0',
    install_requires=REQUIRED,
    include_package_data=True,
    classifiers=[
            "Topic :: Utilities"
    ]
)

Все, чего я пытаюсь достичь, это:

pip uninstall -y foobar # remove old installation
python setup.py build # build
python setup.py install # install
foobar # run the "cli.main:main"

Это приводит к следующей ошибке:

bash: /Users/myuser/.pyenv/shims/foobar: No such file or directory

Обновление # 1

Мой пакет определенно собирается и устанавливается. Потому что я вижу свою упаковку с я делаю pip freeze | grep foobar. Это определенно там.


Обновление # 2

Мой пакет также может быть импортирован в оболочку Python следующим образом:

$ python 
Python 3.6.8 
Type "help", "copyright", "credits" or "license" for more information.
>>> import cli
>>> import cli.src
>>>

Здесь нет ошибок ^ укажите, мой импорт пакетов в порядке. Но я пытаюсь сделать мой пакет доступным прямо из cli. Ввод foobar должен непосредственно вызвать cli.src.main:main, как описано в моем разделе entry_points. Это, похоже, не работает.


Обновление № 3

$ which foobar
$ echo $?
1

Это говорит о том, что отображение для команды cli не определено. У меня нет вариантов сейчас: Должно быть, я где-то напутал в setup.py ... любые выводы будут полезны.

...