gpt4 book ai didi

python - Setuptools 不为 entry_points 传递参数

转载 作者:太空狗 更新时间:2023-10-29 22:01:06 26 4
gpt4 key购买 nike

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

安装后,我会:

$ 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() 进行解析(通过 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',
]
}

有什么想法吗?

最佳答案

只是为了全面了解 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'}

因为它们都是可选参数,

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

关于python - Setuptools 不为 entry_points 传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2853088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com