标签: python-click

在setuptools包上的Pyinstaller

我正在尝试在我使用Click库在Python中构建的CLI应用程序上运行PyInstaller .我在使用PyInstaller构建项目时遇到了麻烦.PyInstaller在他们的GitHub wiki中有一个名为Recipe Setuptools Entry Point的文档,该文档提供了有关如何将PyInstaller与setuptools包一起使用的信息,我正在为此项目使用它.但是,它似乎在我运行时找不到基本模块pyinstaller --onefile main.spec.

我的问题是:问题只是我的文件夹结构的问题吗?Recipe Setuptools入口点是否采用某种文件结构?

相关信息

Pyinstaller输出

184 INFO: PyInstaller: 3.3.1
184 INFO: Python: 3.6.4
189 INFO: Platform: Darwin-16.7.0-x86_64-i386-64bit
193 INFO: UPX is available.
Traceback (most recent call last):
  File "/usr/local/bin/pyinstaller", line 11, in <module>
    sys.exit(run())
  File "/usr/local/lib/python3.6/site-packages/PyInstaller/__main__.py", line 94, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "/usr/local/lib/python3.6/site-packages/PyInstaller/__main__.py", line 46, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 791, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File …
Run Code Online (Sandbox Code Playgroud)

python setuptools pyinstaller python-3.x python-click

10
推荐指数
1
解决办法
3043
查看次数

Python:正确使用 Click 与 __main__ 和 __init__

我一直在使用Click 包,但无法让以下代码片段正常工作。

import numpy as np
import click

@click.command()
@click.option('--get_print', default = True)

class CustomClass():

     def __init__(s, get_print):

        s.data = np.random.normal(0, 1, 10)
        s.get_print = get_print

        if s.get_print:
            print("get_print =", s.get_print)

     def print_mean(s):

        print("Printing mean:")

        mean_ = np.mean(s.data)

        if s.get_print:

            print(mean_)

if __name__ == '__main__':
    CustomClass().print_mean()
Run Code Online (Sandbox Code Playgroud)

似乎该print_mean函数永远不会被调用。如果我注释掉 @Click 装饰器并手动设置get_print=True,该print_mean方法就会被很好地调用。

我怀疑 @Click 以某种方式设置__main__,所以当我if __name__ == '__main__'这样做时,它只会再次调用 Click - 但也许我错了?

在任何一种情况下,当您希望该方法继承所有选项,并且实际上能够调用类中定义的函数时,使用 Click 的正确方法是什么?__init__if __name__ == '__main__' …

python inheritance python-click

10
推荐指数
1
解决办法
8498
查看次数

使用Python和Click创建shell命令行应用程序

我正在使用click(http://click.pocoo.org/3/)来创建命令行应用程序,但我不知道如何为此应用程序创建shell.
假设我正在编写一个名为test的程序,我有一个名为subtest1subtest2的命令

我能够从终端工作,如:

$ test subtest1
$ test subtest2
Run Code Online (Sandbox Code Playgroud)

但我在考虑的是一个shell,所以我可以这样做:

$ test  
>> subtest1  
>> subtest2
Run Code Online (Sandbox Code Playgroud)

点击可以实现吗?

python command-line-interface python-click

9
推荐指数
1
解决办法
4110
查看次数

Python单击命令名称

我正在使用click包创建命令行工具.但是,我想要一个'list'命令.例如:

@click.command
@click.option(help='list...')
def list():
    # do stuff here
Run Code Online (Sandbox Code Playgroud)

除了将其作为函数名称之外,还有另一种方法可以单击传递命令名吗?我不希望这个函数影响python的内置list.我查看了文档并且无法真正找到有关命令名称的任何内容 - 我已经阅读了命令别名,但这似乎没有帮助解决这个问题.或者我不需要担心list被遮蔽,因为它被点击装饰器包裹?提前致谢.

python python-click

9
推荐指数
1
解决办法
4012
查看次数

Python点击,你能把-h作为别名

我最近找到了点击库(http://click.pocoo.org/6/),我喜欢它.

我试图弄清楚是否可以为--help选项创建一个别名,该帮助的快捷方式.所以,例如:

app.py --help
Run Code Online (Sandbox Code Playgroud)

为主应用程序提供帮助

app.py sub --help
Run Code Online (Sandbox Code Playgroud)

将为sub提供帮助.我希望能够使用-h.如果我正在创建选项,它可能看起来像:

@click.option('-h', '--help')
Run Code Online (Sandbox Code Playgroud)

但该--help选项是内置的.有没有办法扩展该选项或为它创建别名?

python python-click

9
推荐指数
1
解决办法
1160
查看次数

Python点击:隐藏一些选项

我正在使用clickPython构建CLI.我有几个选项来定义我正在定义的命令,我希望隐藏其中一些命令--help.我怎样才能做到这一点?

python command-line-interface python-click

9
推荐指数
2
解决办法
1973
查看次数

如何调试python单击cli应用程序?

我使用python中的click库构建了一个cli应用程序.没有关于如何调试命令的文档.

没有单击,它很容易在IDE中调试python文件,但是当我们使用click时,命令需要通过setup.py中的console_scripts设置运行.

python python-3.x python-click

9
推荐指数
2
解决办法
2872
查看次数

click lib是否提供了打印内置帮助消息的方法?

我正在使用clicklib.

在我的代码中,有时我想打印帮助消息,但我知道的唯一方法是:

python xxx --help
Run Code Online (Sandbox Code Playgroud)

但我想使用某个函数在我的代码中打印帮助消息,例如:

click.print_help_msg()
Run Code Online (Sandbox Code Playgroud)

有这样的功能吗?

python python-click

9
推荐指数
2
解决办法
3716
查看次数

Poetry 管理 python 包 CLI

我正在使用具有以下结构的 Poetry 开发 Python 包:

/packagename
 /packagename
  /tests
   __init__.py
   test_packagename.py
  __init__.py
  packagename.py
pyproject.toml
Run Code Online (Sandbox Code Playgroud)

所有的包代码都在 packagename.py 中,它以__init__.py.

我想添加一个 CLI,我的目标是在命令行中执行以下操作:

<packagename> <packagefunction>
Run Code Online (Sandbox Code Playgroud)

为此,我使用了 Python 的 click 包并将我的<packagefunction>内部写packagename.py为:

 @click.command()
 def packagefunction():
Run Code Online (Sandbox Code Playgroud)

目前,我已将入口点添加到诗歌配置文件中:

[tool.poetry.scripts]
<packagefunction> = '<packagename>:<packagefunction>'
Run Code Online (Sandbox Code Playgroud)

并运行:

poetry run <packagefunction>
Run Code Online (Sandbox Code Playgroud)

完美执行。

但是,我知道这不是正确的方法,我希望 CLI 使用上面显示的命令执行。

python command-line-interface python-click python-poetry

9
推荐指数
1
解决办法
2482
查看次数

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

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

如果我尝试运行最简单的python单击脚本,如来自realpython的以下 内容

import click

@click.group()
def greet():
    pass


@greet.command()
def hello(**kwargs):
    pass


@greet.command()
def goodbye(**kwargs):
    pass

if __name__ == '__main__':
    greet()
Run Code Online (Sandbox Code Playgroud)

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

Error: no such option: --multiproc
Run Code Online (Sandbox Code Playgroud)

我用多个python-click脚本尝试了这个,调试永远不会有效.有没有人注意到这一点,有什么方法可以解决这个问题吗?

python intellij-idea pycharm python-click

8
推荐指数
1
解决办法
1745
查看次数