安装工具不传递入口点的参数

发布于 2024-09-02 02:13:35 字数 819 浏览 7 评论 0原文

我正在使用setuptools编写我编写的Python脚本

安装后,我这样做:

$ megazord -i input -d database -v xx-xx -w yy-yy

就像我运行它时一样 ./like_this

但是,我得到:

Traceback (most recent call last):
  File "/usr/local/bin/megazord", line 9, in <module>
    load_entry_point('megazord==1.0.0', 'console_scripts', 'megazord')()
TypeError: main() takes exactly 1 argument (0 given)

看起来 setuptools 没有将我的参数发送到 main() 进行解析( by optparse)

这是我的entry_points setuptools配置:

entry_points = {
    'console_scripts': [ 
        'megazord = megazord.megazord:main',
        'megazord-benchmark = megazord.benchmark:main',
        'megazord-hash = megazord.mzhash:main',
        'megazord-mutate = megazord.mutator:main',
        ]
}

有什么想法吗?

I'm using setuptools for a Python script I wrote

After installing, I do:

$ megazord -i input -d database -v xx-xx -w yy-yy

Like I would if I was running it ./like_this

However, I get:

Traceback (most recent call last):
  File "/usr/local/bin/megazord", line 9, in <module>
    load_entry_point('megazord==1.0.0', 'console_scripts', 'megazord')()
TypeError: main() takes exactly 1 argument (0 given)

Which looks like setuptools is not sending my arguments to main() to be parsed (by optparse)

Here's my setuptools config for entry_points:

entry_points = {
    'console_scripts': [ 
        'megazord = megazord.megazord:main',
        'megazord-benchmark = megazord.benchmark:main',
        'megazord-hash = megazord.mzhash:main',
        'megazord-mutate = megazord.mutator:main',
        ]
}

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷︶言冷语的世界 2024-09-09 02:13:35

只是为了全面了解 Megazord.py 的外观,使用 @Jeffrey Harris 建议使用一个很好的库来解析输入。

import argparse

def main():
    ''' Example of taking inputs for megazord bin'''
    parser = argparse.ArgumentParser(prog='my_megazord_program')
    parser.add_argument('-i', nargs='?', help='help for -i blah')
    parser.add_argument('-d', nargs='?', help='help for -d blah')
    parser.add_argument('-v', nargs='?', help='help for -v blah')
    parser.add_argument('-w', nargs='?', help='help for -w blah')

    args = parser.parse_args()

    collected_inputs = {'i': args.i,
                    'd': args.d,
                    'v': args.v,
                    'w': args.w}
    print 'got input: ', collected_inputs 

像上面那样使用它,就会得到

$ megazord -i input -d database -v xx-xx -w yy-yy
got input: {'i': 'input', 'd': 'database', 'w': 'yy-yy', 'v': 'xx-xx'}

And 因为它们都是可选参数,

$ megazord
got input: {'i': None, 'd': None, 'w': None, 'v': None}

Just to give a full picture of what megazord.py would look like, using @Jeffrey Harris suggestion to use a nice library for parsing the inputs.

import argparse

def main():
    ''' Example of taking inputs for megazord bin'''
    parser = argparse.ArgumentParser(prog='my_megazord_program')
    parser.add_argument('-i', nargs='?', help='help for -i blah')
    parser.add_argument('-d', nargs='?', help='help for -d blah')
    parser.add_argument('-v', nargs='?', help='help for -v blah')
    parser.add_argument('-w', nargs='?', help='help for -w blah')

    args = parser.parse_args()

    collected_inputs = {'i': args.i,
                    'd': args.d,
                    'v': args.v,
                    'w': args.w}
    print 'got input: ', collected_inputs 

And with using it like in the above, one would get

$ megazord -i input -d database -v xx-xx -w yy-yy
got input: {'i': 'input', 'd': 'database', 'w': 'yy-yy', 'v': 'xx-xx'}

And since they are all optional arguments,

$ megazord
got input: {'i': None, 'd': None, 'w': None, 'v': None}
对你的占有欲 2024-09-09 02:13:35

setuptools console_scripts 入口点需要一个没有参数的函数。

令人高兴的是, optparse (命令行选项的解析器)不需要传递任何参数,它将读取 sys.argv[1:] 并将其用作输入。

The setuptools console_scripts entry point wants a function of no arguments.

Happily, optparse (Parser for command line options) doesn't need to be passed any arguments, it will read in sys.argv[1:] and use that as it's input.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文