问题标签 [python-click]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1315 浏览

python - 避免使用 flask-cli 创建应用程序

我正在为我的烧瓶应用程序使用自定义的 manage.py 脚本,该脚本是使用工厂模式创建的。

该脚本需要能够运行服务器并运行我的测试。我使用外部工具来运行我的测试,所以我不需要创建应用程序来运行测试。如何仅在运行某些命令时创建应用程序?

我的脚本目前看起来像:

我尝试创建第二组,但似乎一次只能“运行”一个组,所以我不确定如何解决这个问题。

0 投票
1 回答
91 浏览

python - 构建 python-click 命令

我有一个类似的命令:

$trial login --user

为此,我曾经python-click包装我的 python 函数并且工作正常。我很陌生python-click,不得不以某种方式构建命令,而不是上面提到的。

以下是我目前的文件代码trial.py

我的setup.py文件如下所示:

但现在我想稍微改变一下命令。我想让它像这样,

我想添加一系列 k8s 命令,但不知道如何将其包含在代码中,并且希望得到一些指导。

0 投票
1 回答
3530 浏览

python - 如何在基于 Click 的 CLI 应用程序的单元测试中模拟组件?

我不确定这是否最适合这里或 Programmers Stack Exchange,但我会先在这里尝试,如果不合适,我会在那里交叉发布。

我最近开发了一个 Web 服务,我正在尝试创建一个基于 Python 的命令行界面,以使其更易于交互。我一直在使用 Python 进行简单的脚本编写,但我在创建完整的包(包括 CLI 应用程序)方面缺乏经验。

我研究了不同的包来帮助创建 CLI 应用程序,我决定使用click。我关心的是如何构建我的应用程序以使其在我真正开始将它们组合在一起之前彻底可测试,以及如何使用 click 来帮助解决这个问题。

我已经阅读了关于测试的 click 文档并检查了API 的相关部分,虽然我已经设法使用它来测试简单的功能(在作为参数传递给我的 CLI 时验证--version--help工作),但我不确定如何处理更高级的测试用例。

我将提供一个具体示例来说明我现在正在尝试测试的内容。我计划让我的应用程序具有以下类型的架构......

建筑学

...其中CommunicationService封装了通过 HTTP 连接和直接与 Web 服务通信所涉及的所有逻辑。我的 CLI 为 Web 服务主机名和端口提供默认值,但应允许用户通过显式命令行参数、编写配置文件或设置环境变量来覆盖这些:

我想测试如果用户指定不同的主机名和端口,那么ControllerCommunicationService使用这些设置而不是默认值来实例化 a。

我想做到这一点的最好方法是这样的:

如果我能得到关于如何正确处理这种情况的建议,我应该能够接受它并使用相同的技术来使我的 CLI 的每个其他部分都可测试。

对于它的价值,我目前正在使用 pytest 进行测试,这是我到目前为止所进行的测试的范围:

0 投票
1 回答
3592 浏览

python - python-click是否可以使用intellij进行调试?

这似乎是 python-click 的一个普遍问题,但是在谷歌的任何地方都没有提到它。

如果我尝试运行最简单的 python 点击​​脚本,比如 realpython中的以下内容

Intellij 调试器完全用错误消息轰炸:

我已经用多个 python-click 脚本尝试过这个并且调试永远不会工作。有没有其他人注意到这一点,有没有办法解决这个问题?

0 投票
1 回答
7505 浏览

python - --help 选项中 Click.option 的类型和默认输入值

如何在其帮助文本中Click显示 a 的默认输入值@click.option(),以便在调用程序时打印它--help

0 投票
2 回答
2794 浏览

python - 如何使用 Sphinx 记录单击命令?

Click是一个流行的 Python 库,用于开发 CLI 应用程序。Sphinx是一个流行的库,用于记录 Python 包。有些人面临的一个问题是集成这两个工具,以便他们可以为他们的基于点击的命令生成 Sphinx 文档。

我最近遇到了这个问题。我用click.commandand装饰了我的一些函数click.group,向它们添加了文档字符串,然后使用 Sphinx 的autodoc扩展为它们生成了 HTML 文档。我发现它省略了这些命令的所有文档和参数描述,因为Command在 autodoc 获取它们时它们已被转换为对象。

如何修改我的代码以使我的命令的文档--help在 CLI 上运行时可供最终用户使用,也可供浏览 Sphinx 生成的文档的人使用?

0 投票
1 回答
6126 浏览

python - Python 点击​​:自定义错误信息

我使用优秀的Python Click库来处理我的工具中的命令行选项。这是我的代码的简化版本(此处为完整脚本):

如果有人在没有任何标志的情况下运行命令,他们会收到默认的单击错误消息:

这很好,但我很想告诉(非常)新手用户,使用帮助标志可以获得更多帮助。换句话说,当命令无效时,在错误消息中添加一个自定义语句,告诉人们尝试mytool --help获取更多信息。

是否有捷径可寻?我知道我可以删除该required属性并在主函数中处理这个逻辑,但是对于这样一个小添加感觉有点hacky。

0 投票
1 回答
1549 浏览

python - 没有这个选项,点击6.6版本

使用http://click.pocoo.org/5/

我定义了这个命令,但是,当我运行命令时,缺少的选项被正确传递(我可以看到值),但是我进入Error: no such option: --missing终端并且命令失败。

我在这里到底做错了什么?下面的代码已经删除了一些信息以使其不那么不堪重负,但逻辑是相同的。

0 投票
4 回答
28812 浏览

python - 从单击命令调用另一个单击命令

我想使用一些有用的功能作为命令。为此,我正在测试click图书馆。我定义了我的三个原始函数,然后装饰为click.command

这样我就可以生成三个命令add_nameadd_surnameadd_name_and_surname使用一个setup.py文件,pip install --editable .然后我可以管道:

但是,当使用不同的单击命令作为函数编写时,我需要解决一个小问题:

我不知道为什么它不起作用,我需要这个add_name_and_surname命令来调用add_nameadd_surname不是作为命令而是作为函数调用,否则它违背了我将函数用作库函数和命令的最初目的。

0 投票
2 回答
1254 浏览

python - 重命名python点击参数

我有这段代码:

我想将选项变量重命名为--delete-thing. 但是 python 不允许在变量名中使用破折号。有没有办法编写这种代码?

所以delete_thing将被设置为delete-thing