问题标签 [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 投票
5 回答
22963 浏览

python - 为什么我对 click.argument 的使用会产生“得到一个意外的关键字参数‘帮助’?

运行以下代码会导致此错误:

TypeError:init()得到了一个意外的关键字参数“帮助”

代码:

完整的错误输出:

为什么会出现这个错误?

0 投票
1 回答
85 浏览

python - How to share a variable globally in python program?

I'm working on a program which has a config. I need to use a different config for the tests and the normal running of the program.

I manage all the software and tests using a manage.pyscript and all the tests are under python manage.py test ... (eg: python manage.py test all, python manage.py test db, ...)

To choose the config I did in the __init__.py of the config:

and after I import the config from this file.

But sometime the test runner takes the first place in the argv so the test is in argv[2] or sometimes I run the tests by launching the script directly and not the manage.py.

My question is by which ways can I share a variable across the full codebase?

Thanks.

0 投票
2 回答
2351 浏览

python - 将彩色右对齐文本输出到终端

我想在终端中输出与右侧完全对齐的彩色文本(如 pacman 的截图(arch linux 发行版的数据包管理器)(未着色))pacman 文本向右对齐

目前我正在使用format

这很好用,直到我通过 ANSI 转义码添加颜色:

看起来像这样:在此处输入图像描述

即右侧不完全右对齐。哪个是“正确的”,因为right实际上\\x1b[32mbar\\x1b[0m哪个当然具有更高的长度bar,因此需要更少的空间来右对齐。直到终端得到文本并且只显示bar(带颜色)。

我是否遗漏了 python std lib 中的任何内容或单击?或者是否有一个处理终端颜色和对齐的简单库可以帮助我?或者这个问题有简单的解决方案吗?

0 投票
5 回答
7425 浏览

python - 在 Python 中使用带有多处理的 click.progressbar

我有一个庞大的列表需要处理,这需要一些时间,所以我将它分成 4 个部分,并使用一些功能对每个部分进行多处理。运行 4 核仍然需要一些时间,所以我想我会在函数中添加一些进度条,以便它可以告诉我每个处理器在处理列表时所处的位置。

我的梦想是拥有这样的东西:

随着函数中循环的进行,每个条都会移动。但相反,我得到了一个连续的流程:

在此处输入图像描述

等,填充我的终端窗口。

这是调用该函数的主要python脚本:

下面是函数eraseCloseAtoms()

0 投票
2 回答
1864 浏览

python - Python 单击与选项关联的帮助字符串中的错误

我正在尝试学习如何使用 Python-click。我无法将帮助参数与我的一个选项一起使用,所以我最终放弃并更改了代码以不包含该选项的帮助。然而,尽管关闭并重新启动 Python 并且现在重新启动我的计算机,与尝试使用帮助参数相关的错误消息仍然出现。

代码:

最初用于我拥有的最后一个 @click.option

我不断收到一条错误消息,我无法解决与未知参数帮助有关的问题。我放弃了它,改为上面的内容,现在我遇到了类似的错误,

然后我关闭了 Python,我关闭了我的模块,然后重新启动 Python 打开并再次运行我的代码,但仍然收到此错误消息

追溯:

所以然后我关闭了 Python Idle,我保存并关闭了我的代码,然后重新启动了 Python,重新打开了我的代码,但我仍然得到相同的回溯,除了注意到回溯有我在猛烈撞击后切换到的代码行监视器和放弃

我正准备重新启动,但对原因非常好奇。

我重新启动,但仍然收到相同的错误

重命名文件并再次运行并没有改变结果 - 相同的回溯

0 投票
4 回答
6310 浏览

python-3.x - python3的编码问题并单击包

当 libclick检测到运行时是 python3 但编码是 ASCII 时,它会突然结束 python 程序:

我发现了这个问题的原因,当我从我的 Mac 连接到我的 Linux 主机时,Terminal.app 将 SSH 会话区域设置设置为我的 Mac 区域设置 (es_ES.UTF-8) 但是我的 Linux 主机尚未安装这样的语言环境(仅限 en_US.utf-8)。

我应用了一个初步的解决方法来修复它(但它有很多问题,请参阅接受的答案):

编辑:要获得更好的补丁,请参阅我接受的答案。

我所有的 linux 主机都安装了“en_US.utf-8”作为语言环境(Fedora 使用它作为默认设置)。

我的问题是:是否有更好(更强大)的方式来选择/强制 python3 脚本中的语言环境?例如,设置系统中可用的语言环境之一。

也许有一种不同的方法来解决这个问题,但我没有找到它。

0 投票
1 回答
1750 浏览

python - 是否可以在基于 Click 的界面中为所有子命令添加全局参数?

我在 virtualenv 下使用 Click 并使用entry_pointsetuptools 中的指令将根映射到一个名为 dispatch 的函数。

我的工具公开了两个子命令serve,并且config我使用顶级组上的一个选项来确保用户始终传递--path指令。然而,使用结果如下:

theserveconfigsub 命令都需要确保用户始终传递路径,理想情况下,我希望将 cli 呈现为:

当前基于 Click 的实现如下:

如果不向每个子命令添加路径参数,这可能吗?

0 投票
1 回答
2618 浏览

python - 使用 Python 的 Click 库将命令行选项的值保存在对象中

我想用 Python 的Click 库解析一些命令行参数,并将提供的值保存在一个对象中。

我的第一个猜测是这样做:

但是,这不起作用,而是我得到:

显然,传递self给装饰函数不是正确的方法。如果我self从方法参数中删除,那么我可以这样做print(myoption),它将打印在屏幕上,但我的类5的任何实例都不会知道该值。Configuration()

处理这个问题的正确方法是什么?我认为它与Click 中的上下文处理有关,但我无法根据提供的示例使其正常工作。

0 投票
1 回答
1434 浏览

python - 通过单击将未知标志传递给命令行

问题

使用python click 库创建命令行工具时,是否可以将未知数量的参数传递给函数?我正在考虑类似于 *args 命令的东西。

用例

我正在尝试为catkin构建一个包装器,并希望将 click 用于它附带的所有不错的实用程序。在使用指定命令调用 catkin 之前,此应用程序应该执行一些任务,例如切换到工作空间的根目录。例如catkin build编译代码。这样做的问题是,我不想显式声明可以传递给 catkin 的每个可能的编译标志,而是只想查看实际命令并将所有参数直接传递给 catkin。

例子

到目前为止,我发现可以使用选项定义最后一个参数,该选项nargs=-1将收集此变量中的所有后续参数。通过这种方式,您可以收集例如几个文件名。这几乎是我正在寻找的,除了它不会接受以 dash 开头的标志-。它会从一个错误说Error: no such option: -a

0 投票
1 回答
2128 浏览

python - python-click:添加修改其他参数行为的选项

这个问题是关于点击包的:

Click 是一个 Python 包,用于以可组合的方式使用尽可能少的代码创建漂亮的命令行界面。它是“命令行界面创建工具包”。它是高度可配置的,但带有开箱即用的合理默认值。

它旨在使编写命令行工具的过程变得快速而有趣,同时还防止因无法实现预期的 CLI API 而导致的任何挫败感。

我想click.Option在 my中添加一个click.Command,这会改变该命令的其他参数的行为。考虑以下示例:

如果cli_a在没有明确指定x的情况下调用,则会提示用户提供一个值(或使用 ENTER 确认默认值)。如果cli_b在不指定x默认值的情况下调用,则在不提示用户的情况下使用。

我现在想添加一个标志click.Option,允许用户在上述变体之一之间进行选择(在运行时)。因此,调用cli_c --i的行为类似于cli_a,调用cli_c的行为类似于cli_b.

这对当前的 API 可行吗?可行吗?

类似的用例类似于anwser-all-confimation-prompts-with-yes标志。通常,如果 cli 工具应该由用户交互使用,并且通过脚本或类似的东西在自动化模式下使用,通常会出现这种情况。