将Python脚本转换为CLI并启用其分发

时间:2018-06-13 04:53:12

标签: python command-line command-line-interface

我有一个名为recogn.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解释器的情况下执行相同的工作。

我已经阅读了一个教程How Do I Make My Own Command-Line Commands Using Python?,但它似乎只在本地有效,无法分发。我也浏览了Writing the Setup Script,希望找到分发的解决方案。但是,我没有找到一种方法来指定要从PyPI安装的外部包。 (或者我可能错过了一些东西 - 我是Python的初学者。)此外,setup.py似乎既不是根据comments under the accepted answer of What is setup.py?安装软件包的好方法,也不能启用CLI。

0 个答案:

没有答案