介绍
Python Fire 是一个 Python 库,允许您从 Python 对象自动使用 CLI(命令行接口)。
虽然从标准的Python库使用)(https://andsky.com/tech/tutorials/how-to-use-argparse-to-write-command-line-programs-in-python)。
在本教程中,您将安装Python Fire并使用它来创建自定义CLI。这些CLI可以创建而无需触摸Python源代码。
前提条件
- Ubuntu 22.04服务器,根据我们Ubuntu 22.04的初始服务器设置指南设置,非 root** 用户拥有"sudo"权限并启用了防火墙.
- 联合国 Python 3的最新版本安装在您的机器上,并创建了虚拟环境,紧随其后[如何安装Python 3,并在Ubuntu 22.04服务器上设置编程环境 (https://andsky.com/tech/tutorials/how-to-install-python-3-and-set-up-a-programming-environment-on-an-ubuntu-22-04-server).
- 联合国 熟悉Python语言,如何在其中编码. 一个很好的入门器是这个关于[如何用Python 3编码(https://www.digitalocean.com/community/tutorial_series/how-to-code-in-python-3)的系列. .
第1步:安装Python Fire
Python Fire 是托管在 PyPI上,可从 pip
安装。 安装 Python 3 的前提条件后,您应该创建并启用虚拟环境。 如果您没有启用它,请导航到您的环境目录:
1cd environments
然后启用您的虚拟环境:
1source my_env/bin/activate
这确保您的火
安装不会影响全球的管
安装。此外,全球级的管
安装可以与apt
等包管理器不可预测地互动。
1pip install fire
火
可以以多种方式被召唤,包括在命令行中,没有对您的Python程序添加代码. 您将接下来探索该方法,随后通过将其添加到您的实际代码来探索Python Fire的常规用途,以允许更细微的控制。
步骤 2 — 从程序创建一个 CLI 没有添加代码
首先,设置您的Python文件,可以称之为文件、程序或脚本,所有这些都是正确的。
要创建新文件,请使用nano
或您喜爱的文本编辑器:
1nano example.py
在新文件中插入以下Python代码:
1[label example.py]
2def my_name(name):
3 return "My name is {name}".format(name=name)
保存和退出你的文件. 使用nano
你可以通过按CTRL+O
然后按CTRL+X
来做到这一点。
这是一个名为my_name
的Python函数,它需要一个名为name
的参数。用所需变量调用这个函数将name
变量插入到使用Python字符串格式的句子中。
使用 Python Fire,您可以将现有的 Python 代码转换为 CLI 命令,并在插入变量时执行此代码,而无需使用 Python 代码来调用它。
1python -m fire example my_name --name=sammy
1[secondary_label Output]
2My name is sammy
在这里,您将示例
指定为您要执行的Python程序,而my_name
则是您要执行的特定的函数,因为my_name
是需要一个名为name
的参数的函数,因此您使用--name
旗帜提供参数。
没有对您的Python代码进行任何更改,您已经构建了一个工作CLI。
步骤 3 — 从导入火
的程序创建 CLI
使用 Python Fire 的更常见方法是将火
导入您的代码,这允许更细微的控制和更复杂的代码结构,以便在 CLI 中使用。
打开您的example.py
并插入以下代码:
1[label example.py]
2import fire
3
4def my_name(name):
5 return "My name is {name}".format(name=name)
6
7if __name__ == '__main__':
8 fire.Fire()
原始代码发生了两个显著的变化:‘fire’在开始时被导入,后来在结束时被调用到‘fire.Fire()’呼叫,这允许CLI功能。这只会发生在Python程序由用户直接运行时,并且不会在导入到另一个Python脚本时运行。
保存和退出您的文件。
现在,您可以通过输入此命令来使用您的 CLI:
1python example.py my_name sammy
1[secondary_label Output]
2My name is sammy
因为fire
现在在开始时被导入到你的Python代码中,你不再需要通过python -m
调用命令中的fire
模块,而是可以直接通过文件调用你的CLI,并为函数名和变量提供参数。
这提供了更清洁的 CLI 体验,而不是需要对实际代码进行修改;接下来,您将直接从一个函数中创建一个 CLI,而不是整个 Python 程序。
步骤 4 — 从函数创建 CLI
您可以选择从特定函数中创建一个 CLI,而不是将您的程序中的所有函数暴露在您的 CLI 中。
1[label example.py]
2import fire
3
4def my_name(name):
5 return "My name is {name}".format(name=name)
6
7def my_full_name(first_name, last_name):
8 return "My name is {first_name} {last_name}".format(first_name=first_name, last_name=last_name)
9
10if __name__ == '__main__':
11 fire.Fire(my_name)
保存和退出您的文件。
這次有兩個函數.有原來的「my_name」函數,現在有第二個「my_full_name 函數」。
此外,当fire.Fire
在最后被调用时,它现在需要一个参数. 为了指定您想要使用的函数,您将其列入这里作为参数。
由于您在 CLI 中指定了要使用的函数,因此在命令行中,您只需提供执行函数所需的程序和参数:
1python example.py sammy
1[secondary_label Output]
2My name is sammy
请注意,在输出中,只返回我的_名称
函数,正如您指定的那样。
但是,您可以将多个函数暴露在您的 CLI 中。 要做到这一点,请将一个Python字典传递到fire.Fire
呼叫中。 使用一个字典作为一个关键值数据结构,您可以为您的 CLI 指定多个函数。
1[label example.py]
2import fire
3
4def my_name(name):
5 return "My name is {name}".format(name=name)
6
7def my_full_name(first_name, last_name):
8 return "My name is {first_name} {last_name}".format(first_name=first_name, last_name=last_name)
9
10if __name__ == '__main__':
11 fire.Fire({
12 'my_name': my_name,
13 'my_full_name': my_full_name,
14 })
现在您可以通过您的 CLI 调用第一个函数:
1python example.py my_name sammy
1[secondary_label Output]
2My name is sammy
或者你可以调用你的第二个函数:
1python example.py my_full_name sammy shark
1[secondary_label Output]
2My name is sammy shark
这一次的变化是字典的通过. 使用字典,您可以从您的 CLI 调用任一函数. 接下来,您将从 Python 类创建一个 CLI,而不是一个函数。
步骤 5 — 从类创建 CLI
如何构建您的代码,无论是在 classes 还是仅在函数中,都取决于偏好和个人遵守最佳做法。
要创建一个类,你将重组你的代码,将你的函数放置在其中作为类的一部分。
1[label example.py]
2import fire
3
4class Namer(object):
5 def my_name(self, name):
6 return "My name is {name}".format(name=name)
7
8 def my_full_name(self, first_name, last_name):
9 return "My name is {first_name} {last_name}".format(first_name=first_name, last_name=last_name)
10
11if __name__ == '__main__':
12 fire.Fire(Namer)
现在,尽管重构了代码以使用类,但您可以使用上一个步骤中的相同命令通过 CLI 调用第一个函数:
1python example.py my_name sammy
1[secondary_label Output]
2My name is sammy
或者你可以调用你的第二个函数:
1python example.py my_full_name sammy shark
1[secondary_label Output]
2My name is sammy shark
所创建的 CLI 功能相同,使用与上一步相同的命令. fire.Fire
调用也是相同的. 唯一改变的是重组代码以使用类。
Python Fire 适应您的偏好,允许您使用类或常规函数以您喜欢的方式编码。
结论
在此教程中, 您已经安装了 Python Fire, 然后探索多种方法, 使用 Python 程序、 函数和类创建您自定义的 CLI 。 对于更深的潜水,请查看[官方文档] (https://github.com/google/python-fire/blob/master/docs/guide.md). 而对于 Python CLI 创建的替代方法,请检查关于 [如何使用 argparse 在 Python (https://andsky.com/tech/tutorials/how-to-use-argparse-to-write-command-line-programs-in-python) 中写入命令行程序的指南.