命令行脚本 |Python包装
我们如何在Python中执行任何脚本?
$ python do_something.py
$ python do_something_with_args.py gfg vibhu
可能这就是你的做法。
如果您的答案是您只需单击 IDE 上的一个按钮即可执行Python代码,那么假设您被特别询问了您是如何在命令行上执行此操作的。
让我们让您更轻松。
$ do_something
$ do_something_with_args gfg vibhu
那肯定看起来干净多了。基本上,它们只是您转换为命令行工具的Python脚本。在本文中,我们将讨论如何自己做到这一点。
该过程可以分为以下6个步骤:
- 创建您的命令行脚本。
- 打包的设置文件和文件夹结构。
- 修改
setup.py
文件以合并 CLI 脚本。 - 在发布之前测试你的包,然后构建。
- 在 pypi 上上传并发布你的包。
- 安装新发布的包。
前两个步骤在其各自的文章中进行了全面介绍。建议在继续之前查看它们。本文将主要从第 3 步继续。
步骤#1:制作你的命令行脚本
-> gfg.py
import argparse
def main():
parser = argparse.ArgumentParser(prog ='gfg',
description ='GfG article demo package.')
parser.add_argument('integers', metavar ='N', type = int, nargs ='+',
help ='an integer for the accumulator')
parser.add_argument('-greet', action ='store_const', const = True,
default = False, dest ='greet',
help ="Greet Message from Geeks For Geeks.")
parser.add_argument('--sum', dest ='accumulate', action ='store_const',
const = sum, default = max,
help ='sum the integers (default: find the max)')
args = parser.parse_args()
if args.greet:
print("Welcome to GeeksforGeeks !")
if args.accumulate == max:
print("The Computation Done is Maximum")
else:
print("The Computation Done is Summation")
print("And Here's your result:", end =" ")
print(args.accumulate(args.integers))
步骤#2:设置文件和文件夹结构
步骤#3:修改 setup.py 文件
Setuptools 允许模块注册入口点( entry_points
),其他包可以连接到这些入口点以提供某些功能。它本身也提供了一些,包括console_scripts
入口点。
这允许Python函数(不是脚本!)直接注册为命令行可访问工具!
->设置.py
from setuptools import setup, find_packages
with open('requirements.txt') as f:
requirements = f.readlines()
long_description = 'Sample Package made for a demo \
of its making for the GeeksforGeeks Article.'
setup(
name ='vibhu4gfg',
version ='1.0.0',
author ='Vibhu Agarwal',
author_email ='vibhu4agarwal@gmail.com',
url ='https://github.com/Vibhu-Agarwal/vibhu4gfg',
description ='Demo Package for GfG Article.',
long_description = long_description,
long_description_content_type ="text/markdown",
license ='MIT',
packages = find_packages(),
entry_points ={
'console_scripts': [
'gfg = vibhu4gfg.gfg:main'
]
},
classifiers =(
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
),
keywords ='geeksforgeeks gfg article python package vibhu4agarwal',
install_requires = requirements,
zip_safe = False
)
第 4 步:测试和构建
测试:将目录更改为包的顶级目录,与setup.py
文件相同。
通过键入此命令来安装您想要的包。
$ python3 setup.py install
如果设置中没有错误,这将安装您的软件包。
现在您可以测试包的所有功能。如果出现任何问题,您仍然可以解决问题。
构建:确保您已升级 pip 版本以及最新setuptools
和wheel
。现在使用这个命令来构建你的包的发行版。
$ python3 setup.py sdist bdist_wheel
步骤#5:发布包twine
是一个库,可帮助您将包分发上传到 pypi。在执行以下命令之前,请确保您在 PyPI 上有一个帐户
$ twine upload dist/*
提供凭证并完成!你刚刚在 PyPI 上发布了你的第一个Python包。步骤#6:安装包
现在使用pip
安装新发布的包。
$ pip install vibhu4gfg
玩。
$ gfg
usage: gfg [-h] [-greet] [--sum] N [N ...]
gfg: error: the following arguments are required: N
$ gfg -h
usage: gfg [-h] [-greet] [--sum] N [N ...]
GfG article demo package.
positional arguments:
N an integer for the accumulator
optional arguments:
-h, --help show this help message and exit
-greet Greet Message from Geeks For Geeks.
--sum sum the integers (default: find the max)
$ gfg 5 10 15 -greet
Welcome to GeeksforGeeks!
The Computation Done is Maximum
And Here's your result: 15
$ gfg 5 10 15 -greet --sum
Welcome to GeeksforGeeks!
The Computation Done is Summation
And Here's your result: 30
参考:https://python-packaging.readthedocs.io/en/latest/command-line-scripts.html