作者clsmbstu (missing)
看板Python
标题[问题] 如何把Python scripts包成可散布的CLI?
时间Sat Jun 16 12:19:37 2018
假设我有一档案recognize.py如下:
```python
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`是一个我自己写的大型模组,我已经帮它准备了requirements.txt:
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 -i <path_to_image>`。
而我好奇的是:有没有可能更进一步,让使用者只要透过某些步骤(安装?),
完成之後,他就可以做到例如:`ocr -i <path_to_image>`?
概念上就像git或是homebrew,使用者甚至不需要知道它们是用什麽语言写的。
我在网路上有找到一篇教学:
How Do I Make My Own Command-Line Commands Using Python?
https://dbader.org/blog/how-to-make-command-line-commands-with-python
但是他这里面的方法只在本地有效,没有提到要怎麽散布。
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.121.6.93
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1529122780.A.971.html
1F:→ kenduest: 在 setup.py 内用 entry_points 内透过 console_script 06/16 17:58
2F:→ kenduest: 指定程式进入点,用 python setup.py 安装之後 06/16 17:59
3F:→ kenduest: 系统会自动在 /usr/local/bin 等这类路径产生 script 06/16 17:59
4F:→ kenduest: unix 系统一般 PATH 都会搜寻该目录,所以可以找到执行 06/16 18:00
6F:→ clsmbstu: 谢谢!我再研究看看~ 06/17 21:41