Превращение скрипта Python в CLI и включение его распространения - PullRequest
0 голосов
/ 13 июня 2018

У меня есть Python-файл с именемозна .py, который принимает несколько изображений и выполняет OCR с несколькими процессами, где ocr_tools - это большой самописный модуль:

import argparse
import json
from multiprocessing import Pool
from ocr_tools import Organize
organizer = Organize()

parser = argparse.ArgumentParser(description="Recognize the contents on a lab report and return a json string.")
parser.add_argument("-i", "--image", nargs="*", required=True, help="path to input image file")
args = parser.parse_args()

if __name__ == "__main__":
    with Pool() as p:
        report_set = json.dumps({"report_set": p.map(organizer.finalize_report, args.image)}, ensure_ascii=False)
        print(report_set)

Для ocr_tools,У меня также есть файл require.txt, сгенерированный pipreqs , чтобы пользователи могли устанавливать необходимые пакеты из PyPI :

numpy==1.14.3
regex==2018.2.21
requests==2.18.4
pandas==0.23.0
opencv_python==3.4.1.15
scikit_learn==0.19.1

Если я распространю эти файлы и модули, пользователидолжен иметь возможность выполнять python recognize.py --image <path_to_an_image> из командной строки и получать результаты распознавания после того, как они установят пакеты, перечисленные в файле require.txt.

Теперь мне интересно, есть ли способ, позволяющий пользователям что-то еще делать?как ocr --image <path_to_an_image>, то есть то же самое задание без указания интерпретатора python в командной строке.

Я прочитал учебник, Как создавать свои собственные команды командной строки, используяPython? , но он эффективен только локально и не может быть распространен.Я также посмотрел Написание сценария установки , надеясь найти решения для распространения.Однако я не нахожу способ указать внешние пакеты для установки из PyPI.(Или, может быть, я что-то упустил - я новичок в Python.) Кроме того, setup.py не кажется хорошим способом установки пакетов в соответствии с комментариями под принятым ответом What is setup.py?.или не в состоянии включить CLI.

...