首页 > 解决方案 > 将 Python 脚本转换为 CLI 并启用其分发

问题描述

我有一个名为recognize.py 的Python 文件,它需要多个图像并使用多个进程执行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,我还有一个由pipreqs生成的 requirements.txt供用户从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>在安装 requirements.txt 中列出的那些包后从命令行执行并获得 OCR 结果。

现在我想知道是否有一种方法可以进一步使用户能够执行类似的操作ocr --image <path_to_an_image>,即无需python在命令行中指定解释器即可完成相同的工作。

我读过一个教程,如何使用 Python 制作我自己的命令行命令?但它似乎只在本地有效,无法分发。我还浏览了 Writing the Setup Script,希望能找到分发的解决方案。但是,我找不到指定要从 PyPI 安装的外部包的方法。(或者也许我错过了一些东西 - 我是 Python 的初学者。)此外,根据什么是 setup.py? ,也无法启用 CLI。

标签: pythoncommand-linecommand-line-interface

解决方案


推荐阅读