Сделайте CLI с помощью argparse и setuptools - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть модуль sfind.py. Как я могу сделать это, чтобы я мог запустить скрипт по имени файла без префикса py?

 python sfind instead python sfind.py

sfind.py

import argparse


def createParser():
    some logic
    return parser

def main(namespace):
    some logic


if __name__ == '__main__':
    parser = createParser()
    namespace = parser.parse_args()
    main(namespace)

Я попытался сделать это с помощью setuptools, создал новый файл setup.py в том же каталоге.

setup.py

из настройки импорта setuptools

setup(
    name='sfind',
    version='0.1',
    packages=['sfind'],
    entry_points={
    'console_scripts': [
        'sfind=sfind:__main__'
    ]
})

Но произошла ошибка

python: can't open file 'sfind': [Errno 2] No such file or directory

Может кто-нибудь помочь мне сделать это правильно?

Структура файла:

-sfind
  --__init__.py
  --__main__.py
  --sfind.py
  --test.py

1 Ответ

0 голосов
/ 09 ноября 2018

Вам не нужны setuptools для вызова вашего модуля как python sfind. Setuptools позволит вам звонить просто sfind. Чтобы вызвать его с помощью python sfind, вы должны сделать свой sfind модулем, и вы можете сделать это, создав каталог python sfind с __init__.py, __main__.py и sfind.py в каталоге. Затем вы можете позвонить с помощью python sfind. Если вы просто хотите вызвать его с помощью sfind, вы можете использовать инструменты настройки, но рекомендуется предоставить вызываемую функцию (например, sfind=sfind.sfind:main) вместо самого модуля (__main__) в качестве entry_points. Затем вы можете сделать python setup.py install или python setup.py sdist, затем pip install.

...