Windows 上单击命令行界面修改用法字符串
Modify Usage string on Click command line interface on Windows
我有一个名为 tdsm
的 Python 包,这是我第一次使用 Armin Ronacher 的 Click 包将其转换为命令行界面。我已经在这个目录结构中设置了我的脚本:
我还创建了一个 setup.py
文件:
from setuptools import setup
setup(
name='tdsm',
version='0.1',
py_modules=['tdsm.scripts.data_manager',
'tdsm.scripts.visuals'],
include_package_data=True,
install_requires=[
'click',
'numpy',
'scipy',
'pandas',
'wand',
'matplotlib',
],
entry_points='''
[console_scripts]
tdsm=tdsm.main:cli
''',
)
在 pip install --editable .
之后,我开始工作了,直到一个点:
# tdsm --help
现在发出:
Usage: tdsm-script.py [OPTIONS] COMMAND [ARGS]...
TDSM standard workflow -- typical sequence of commands:
`init <path>` or `open <path>`: to set up the project or to open
a new session on an existing project.
`plot`: framework for setting up plots, display layers, and styling.
Options:
--help Show this message and exit.
Commands:
init Set up a project from scratch.
plot Initialize a plotting session.
注意用法声明说 Usage: tdsm-script.py [OPTIONS] COMMAND [ARGS]... and不是 Usage: tdsm [OPTIONS] COMMAND [ARGS]... 我认为应该如此。因为我希望非程序员也能使用它,所以我不希望用户钻研系统寻找不存在的文件...
仔细阅读文档,我可以看到如何更改帮助文本的各个方面,但不是对 tdsm-script.py
的初始引用。关于我做错了什么的任何指示?
您不是唯一遇到此问题的人。从你的屏幕截图来看,你好像在 Windows,现在是 an open bug with Click。
问题是 Click 似乎在自动检测 argv[0]
中的程序名称。请参阅执行此操作的 the code in core.py。
上面的错误报告 link 提出了一些绕过这个问题的骇人听闻的方法,包括猴子修补。不幸的是,关于该错误的最后评论是从 7 月 28 日开始的——也许在该线程上提到您也遇到了这个问题。祝你好运。
问题已在 GitHub bug discussion thread by Markus Unterwaditzer 中解决。我在这里复制它以供记录。
只需使用显式 prog_name
参数调用命令(或组,在我的例子中),因此:
import click
@click.group()
def cli():
pass
@cli.command(short_help='Set up a project from scratch.')
def init():
pass
@cli.command(short_help='Initialise a plotting session.')
def plot():
pass
cli(prog_name='tdsm') # Call with explicit `prog_name`
安装包时,报告了正确的用法:
# tdsm --help
Usage: tdsm [OPTIONS] COMMAND [ARGS]...
我有一个名为 tdsm
的 Python 包,这是我第一次使用 Armin Ronacher 的 Click 包将其转换为命令行界面。我已经在这个目录结构中设置了我的脚本:
我还创建了一个 setup.py
文件:
from setuptools import setup
setup(
name='tdsm',
version='0.1',
py_modules=['tdsm.scripts.data_manager',
'tdsm.scripts.visuals'],
include_package_data=True,
install_requires=[
'click',
'numpy',
'scipy',
'pandas',
'wand',
'matplotlib',
],
entry_points='''
[console_scripts]
tdsm=tdsm.main:cli
''',
)
在 pip install --editable .
之后,我开始工作了,直到一个点:
# tdsm --help
现在发出:
Usage: tdsm-script.py [OPTIONS] COMMAND [ARGS]...
TDSM standard workflow -- typical sequence of commands:
`init <path>` or `open <path>`: to set up the project or to open
a new session on an existing project.
`plot`: framework for setting up plots, display layers, and styling.
Options:
--help Show this message and exit.
Commands:
init Set up a project from scratch.
plot Initialize a plotting session.
注意用法声明说 Usage: tdsm-script.py [OPTIONS] COMMAND [ARGS]... and不是 Usage: tdsm [OPTIONS] COMMAND [ARGS]... 我认为应该如此。因为我希望非程序员也能使用它,所以我不希望用户钻研系统寻找不存在的文件...
仔细阅读文档,我可以看到如何更改帮助文本的各个方面,但不是对 tdsm-script.py
的初始引用。关于我做错了什么的任何指示?
您不是唯一遇到此问题的人。从你的屏幕截图来看,你好像在 Windows,现在是 an open bug with Click。
问题是 Click 似乎在自动检测 argv[0]
中的程序名称。请参阅执行此操作的 the code in core.py。
上面的错误报告 link 提出了一些绕过这个问题的骇人听闻的方法,包括猴子修补。不幸的是,关于该错误的最后评论是从 7 月 28 日开始的——也许在该线程上提到您也遇到了这个问题。祝你好运。
问题已在 GitHub bug discussion thread by Markus Unterwaditzer 中解决。我在这里复制它以供记录。
只需使用显式 prog_name
参数调用命令(或组,在我的例子中),因此:
import click
@click.group()
def cli():
pass
@cli.command(short_help='Set up a project from scratch.')
def init():
pass
@cli.command(short_help='Initialise a plotting session.')
def plot():
pass
cli(prog_name='tdsm') # Call with explicit `prog_name`
安装包时,报告了正确的用法:
# tdsm --help
Usage: tdsm [OPTIONS] COMMAND [ARGS]...