python - 将 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。
解决方案
推荐阅读
- mysql - 未在 MySQL 中创建约束
- integer - 如何使用前置条件确保输入仅为 int 类型
- python - 如何调整一批图像的大小以用于 Pytorch 线性回归?
- c# - HttpActionContext 未设置 AzureAD 身份验证后的声明
- google-chrome - Google Chrome 无法在 Awesome WM 中平铺
- jquery - WooCommerce 根据选择的变化变量限制属性选择
- sql - 获得客户一年内的首次购买
- amazon-s3 - 如何告诉气流在外部服务器上进行身份验证?
- c# - 在 C# 中为 VFP 制作 Selenium 端口
- maven - 开发 CI 构建实践